1. 程式人生 > >java對日期相關操作方法

java對日期相關操作方法

maven:

<dependency>
	<groupId>cn.hutool</groupId>
	<artifactId>hutool-all</artifactId>
	<version>4.0.0</version>
</dependency>

java:

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import org.springframework.util.Assert;

import cn.hutool.core.date.DateUtil;

/**
 * 日期工具類
 */
public class DateUtilz {

	/**
	 * String轉換為Date
	 * 說明:SimpleDateFormat是DateFormat的子類。
	 * 在DateFormat中,也可以呼叫parse方法來解析日期型的資料,不過不推薦這樣做。
	 * 建議還是採用SimpleDateFormat類中parse(Strng source, ParsePosition positon)來解析。
	 * 具體原因,因為DateFormat中的parse方法有bug且不支援定位解析。
	 * @return 分析成功則返回分析得到的日期,失敗則返回null
	 */
	public static Date stringToDate(String date, String pattern) {
	    return stringToDate(date, pattern, Locale.CHINA);
	}
	
	/**
	 * String轉換為Date
	 * @param date
	 * @param pattern
	 * @param locale
	 * @return 分析成功則返回分析得到的日期,失敗則返回null
	 */
	public static Date stringToDate(String date, String pattern, Locale locale) {
		SimpleDateFormat formate = new SimpleDateFormat(pattern, locale);
	    Date newDate = formate.parse(date, new ParsePosition(0));
	    Assert.notNull(newDate, "日期可能與所給格式不匹配");
	    return newDate;
	}

	/**
	 * Date轉換為String
	 */
	public static String dateToString(Date date, String pattern) {
        return DateUtil.format(date, pattern);
	}
	
	/**
	 * 返回指定格式的當天日期
	 * 例如:getCurrentDate("yyyy-MM-dd");
	 * @param pattern 時間樣式
	 * @return 返回指定格式的當天日期
	 */
	public static String getCurrentDate(String pattern) {
		return DateUtil.format(new Date(), pattern);
	}
	
	// 獲取過去第幾天的日期
	public static String getPastDate(int past,String pattern) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
		return DateUtil.format(calendar.getTime(), pattern);
	}
	
}