字符串与日期转换工具类
public class DateUtils {
// 私有构造方法,防止实例化
private DateUtils() {}
/**
* 将字符串按照指定格式转换为Date对象
*
* @param dateStr 日期字符串
* @param format 日期格式
* @return 转换后的Date对象,如果转换失败返回null
*/
public static Date parseDate(String dateStr, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 将Date对象按照指定格式转换为字符串
*
* @param date Date对象
* @param format 日期格式
* @return 转换后的字符串,如果转换失败返回null
*/
public static String formatDate(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
}
日期格式枚举类
public enum DateStyle {
MM_DD("MM-dd"),
YYYY_MM("yyyy-MM"),
YYYY_MM_DD("yyyy-MM-dd"),
MM_DD_HH_MM("MM-dd HH:mm"),
MM_DD_HH_MM_SS("MM-dd HH:mm:ss"),
YYYY_MM_DD_HH_MM("yyyy-MM-dd HH:mm"),
YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd HH:mm:ss"),
MM_DD_EN("MM/dd"),
YYYY_MM_EN("yyyy/MM"),
YYYY_MM_DD_EN("yyyy/MM/dd"),
MM_DD_HH_MM_EN("MM/dd HH:mm"),
MM_DD_HH_MM_SS_EN("MM/dd HH:mm:ss"),
YYYY_MM_DD_HH_MM_EN("yyyy/MM/dd HH:mm"),
YYYY_MM_DD_HH_MM_SS_EN("yyyy/MM/dd HH:mm:ss"),
MM_DD_CN("MM月dd日"),
YYYY_MM_CN("yyyy年MM月"),
YYYY_MM_DD_CN("yyyy年MM月dd日"),
MM_DD_HH_MM_CN("MM月dd日 HH:mm"),
MM_DD_HH_MM_SS_CN("MM月dd日 HH:mm:ss"),
YYYY_MM_DD_HH_MM_CN("yyyy年MM月dd日 HH:mm"),
YYYY_MM_DD_HH_MM_SS_CN("yyyy年MM月dd日 HH:mm:ss"),
HH_MM("HH:mm"),
HH_MM_SS("HH:mm:ss");
private String value;
DateStyle(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
使用示例
public class MainClass {
public static void main(String[] args) {
//日期转为字符串(格式化)
String dateStr = DateUtils.formatDate(new Date(), DateStyle.YYYY_MM_DD);
//字符串转为日期(解析)
Date date = DateUtils.parseDate("2023-11-10 09:49:02", DateStyle.YYYY_MM_DD);
}
}
PS:
SimpleDateFormat类可以将符合特定格式的字符串转换为日期
以下是一些常见特点格式的字符串:
"yyyy-MM-dd":例如 "2023-06-20"
"yyyy/MM/dd":例如 "2023/06/20"
"dd-MMM-yyyy":例如 "20-Jun-2023"
"yyyy-MM-dd HH:mm:ss":例如 "2023-06-20 09:49:02"
"EEE MMM dd yyyy HH:mm:ss zzz":例如 "Tue Jun 20 2023 10:15:30 GMT"
特定格式的意义可通过以下博客查看