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);
}
}