時間打磨了性子,我只能這麼說。現在我都考慮一些比較持久的東西了,例如買個紫砂壺,泡製各式各樣的茶葉,然後戒掉飲料和糖果。最近,也沒有什麼心理活動了,是不是又開始變得隨和了,變得無所企及。俗話說的好:無欲則剛,有容乃大。
現附上,時間操作的9種方法小結。
package com.css.java.learning.service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import com.css.util.DateUtil;
import com.css.util.StringHelper;
public class RedAntDateUtil extends DateUtil {
//設置三種常用時間格式
public static final String FORMAT_TIMESTAMP = "yyyyMMddHHmmss";
public static final String FORMAT_TIME = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_DATE = "yyyy-MM-dd";
/**
*1、 獲取當前時間戳
* @return
*/
public static Long getTimestamp() {
return new Date().getTime();
}
/**
* 2、時間解析爲字符串
* @param date 爲NULL時,使用系統當前時間
* @param format 爲NULL或空串時,使用FORMAT_DATE
* @return 日期按指定類型格式化後的字符串
*/
public static String convertDateToStr(Date date, String format) {
Calendar cal = Calendar.getInstance();
if (date == null) {
return "";
}
cal.setTime(date);
if (StringHelper.isEmpty(format)) {
format = FORMAT_TIME;
}
SimpleDateFormat sdf = new SimpleDateFormat(format, java.util.Locale.US);
return sdf.format(cal.getTime());
}
/**
* 3、字符串解析爲時間
* @param str 爲NULL或空串時,返回NULL
* @param format 爲NULL或空串時,使用FORMAT_DATE
* @return 字符串按指定類型格式化後的日期
*/
public static Date convertStrToDate(String str, String format) {
if (StringHelper.isEmpty(str)) {
return null;
}
if (StringHelper.isEmpty(format)) {
format = FORMAT_TIME;
}
SimpleDateFormat sdf = new SimpleDateFormat(format, java.util.Locale.US);
try {
return sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 4、字符串先解析爲時間,然後把時間格式化爲字符串(將字符串格式化爲標準格式的字符串時間)
* @param str 爲NULL或空串時,返回NULL
* @param formatSource (輸入字符串格式)爲NULL或空串時,使用FORMAT_DATE
* @param formatTarget (輸出字符串格式)爲NULL或空串時,使用FORMAT_DATE
* @return 字符串按指定類型格式化後的字符串
*/
public static String formatStr(String str, String formatSource, String formatTarget) {
return convertDateToStr(convertStrToDate(str, formatSource), formatTarget);
}
/**
* 5、得到從起始年份到今天的年份列表
* @param startDate 輸入起始時間:格式爲"2018-01-01 00:00:00"
* @throws ParseException
*/
public static List<String> getYearList(String startDate) {
Calendar cal = Calendar.getInstance();
Date fromDate = convertStrToDate(startDate, null);
cal.setTime(fromDate);
Calendar endCal = Calendar.getInstance();
List<String> calList = new ArrayList<String>();
while (cal.before(endCal)) {
calList.add(String.valueOf(cal.get(Calendar.YEAR)));
cal.add(Calendar.YEAR, 1);// 加一年
}
return calList;
}
/**
* 6、獲取某月份,所有的周 的日期段(1-7)
* monthOfYear 的格式爲:"2017/6"
*/
public static void getweekofMonth(String monthOfYear) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.setLenient(false);
SimpleDateFormat sdft = new SimpleDateFormat("EEE");
for (int i = 1; i < 32; i++) {
try {
Date date = sdf.parse(monthOfYear+ "/" + i);
System.err.println(sdf.format(date) + ":" + sdft.format(date));
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 7、根據當前日期,獲取所在周
*/
@SuppressWarnings("static-access")
public static Integer getTimeInterval(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayWeek = cal.get(cal.DAY_OF_WEEK) - 1;//中西方,對每週的定義不同
return dayWeek;
}
/**
* 8、根據星期幾來匹配當前年月對應該星期幾的具體日期個數(例如:找出當前月份所有星期三的日期個數)
* @param k 當前月份,包含星期幾的數目
* @param weekTime 星期幾
* @param seYear 年
* @param seMonth 月
* @return k
*/
public static int getYearMonthContentWeek(int k, String weekTime, String seYear, String seMonth) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sdft = new SimpleDateFormat("EEE");
Calendar cal = Calendar.getInstance();
cal.set(Integer.valueOf(seYear), Integer.valueOf(seMonth), 0);
int dayofMonth = cal.get(Calendar.DAY_OF_MONTH);
for (int j = 1; j < dayofMonth + 1; j++) {
try {
Date date = sdf.parse(seYear + "/"+ seMonth + "/" + j);
if(sdft.format(date).equals(weekTime)){
k++;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return k;
}
/**
* 9、根據出生日期, 計算當前年齡
* @param birthday
* @return 年齡
*/
public static int getAgeByBirthday(String birthday) {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int age = 0;
try {
Date dateb = sdf.parse(birthday);
if(cal.before(dateb)){//還沒出生的日期
return 0;
}
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int dayofMonth = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(dateb);
int birthYear = cal.get(Calendar.YEAR);
int birthMonth = cal.get(Calendar.MONTH);
int birthDayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
age = year - birthYear;
if(month <= birthMonth){
if(month == birthMonth){
if(dayofMonth < birthDayOfMonth){
age--;
}
}else{
age--;
}
}
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
return age;
}
}
希望,積累的東西可以少走點彎路。