Java中的时间格式化函数SimpleDateFormat的用法
在Java中,SimpleDateFormat是一个可以将日期和时间格式化为指定格式的类。通过SimpleDateFormat,可以将日期和时间以各种形式展示出来,以满足不同的需求。
一、SimpleDateFormat类的构造函数
SimpleDateFormat类有多个构造函数,其中一个最常用的构造函数是:
public SimpleDateFormat(String pattern)
其中,pattern是指定日期和时间格式的模式字符串。例如:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
其中,yyyy表示年,MM表示月,dd表示日,HH表示小时,mm表示分钟,ss表示秒。
二、SimpleDateFormat类常用的日期和时间格式
下面是SimpleDateFormat类中一些常用的日期和时间格式:
1、日期:
年份
yyyy 四位数完整表示的年份
yy 两位数表示的年份(不足两位前面补0)
月份
MM 两位数表示的月份(不足两位前面补0)
M 一位或两位数表示的月份(前面不补0)
月份英文缩写
MMM 三个字母表示的月份;例如 Jan 表示一月
MMMM 完整的月份名称;例如 January 表示一月
日期
dd 两位数表示的日份(不足两位前面补0)
d 一位或两位数表示的日份(前面不补0)
星期几英文缩写
EEE 三个字母表示的星期几;例如 Mon 表示星期一
EEEE 完整的星期几名称;例如 Monday 表示星期一
年份和星期数
w 一年中的第几周;例如从 周开始的第二周为2,以此类推
W 一个月中的第几周;例如从 周开始的第二周为2,以此类推
2、时间:
小时
HH 24小时表示的小时数(不足两位前面补0)
H 24小时表示的小时数(不补0)
hh 12小时表示的小时数(不足两位前面补0)
h 12小时表示的小时数(不补0)
分钟
mm 两位数表示的分钟数(不足两位前面补0)
m 一位或两位数表示的分钟数(前面不补0)
秒
ss 两位数表示的秒数(不足两位前面补0)
s 一位或两位数表示的秒数(前面不补0)
毫秒
SSS 三位数表示的毫秒数(不足三位前面补0)
3、格式化示例代码
下面是一些使用SimpleDateFormat类格式化的示例代码,以便展示不同的日期和时间格式:
//当前时间
Date date = new Date();
//日期格式
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy年MM月dd日");
System.out.println(formatter1.format(date)); //输出:2021年04月29日
//时间格式
SimpleDateFormat formatter2 = new SimpleDateFormat("HH:mm:ss");
System.out.println(formatter2.format(date)); //输出:15:35:23
//完整日期时间格式
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter3.format(date)); //输出:2021-04-29 15:35:23
//英文星期格式
SimpleDateFormat formatter4 = new SimpleDateFormat("EEE");
System.out.println(formatter4.format(date)); //输出:Thu
//完整星期格式
SimpleDateFormat formatter5 = new SimpleDateFormat("EEEE");
System.out.println(formatter5.format(date)); //输出:Thursday
//时间戳格式
SimpleDateFormat formatter6 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println(formatter6.format(date)); //输出:2021-04-29 15:35:23.340
//月份格式
SimpleDateFormat formatter7 = new SimpleDateFormat("MMM");
System.out.println(formatter7.format(date)); //输出:Apr
//完整月份格式
SimpleDateFormat formatter8 = new SimpleDateFormat("MMMM");
System.out.println(formatter8.format(date)); //输出:April
通过上述代码不难看出,只需按照特定的符号组合即可格式化出各种日期和时间格式,十分灵活。
三、SimpleDateFormat类中其他常用方法
1、解析日期字符串
除了格式化日期和时间以外,SimpleDateFormat类还提供了解析日期字符串的方法。例如,以下代码使用SimpleDateFormat类中的parse()方法解析日期字符串:
String dateStr = "2021-04-29";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = formatter.parse(dateStr);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
输出结果:
Thu Apr 29 00:00:00 CST 2021
2、设置日期格式的本地化对象
SimpleDateFormat类的setDateFormatSymbols()方法可以设置日期格式的本地化对象。例如:
String[] strMonths = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
DateFormatSymbols dfs = new DateFormatSymbols(Locale.US);
dfs.setShortMonths(strMonths);
SimpleDateFormat formatter = new SimpleDateFormat("MMM", dfs);
System.out.println(formatter.format(new Date())); //输出:Apr
3、设置时区
SimpleDateFormat类也可以设置时区,例如:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
System.out.println(sdf.format(new Date())); //输出:2021-04-29 16:41:31
四、SimpleDateFormat类中常见的异常
1、IllegalArgumentException异常
在使用SimpleDateFormat时,如果使用了非法的日期格式,则会抛出IllegalArgumentException异常。例如:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse("2021-04-29 15:62:30");
当解析不合法的日期字符串时,也会抛出此异常。
2、ParseException异常
在使用SimpleDateFormat解析日期字符串时,如果日期字符串的格式与SimpleDateFormat设定的格式不匹配,则会抛出ParseException异常。例如:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse("2021-04-29 15:35");
可以看出,解析的日期字符串缺少了秒数。
五、总结
SimpleDateFormat类是Java中一个用于格式化日期和时间的类。在实际开发中,可以使用SimpleDateFormat类来灵活地自定义日期和时间格式。通过本文对SimpleDateFormat的简要介绍,希望读者能够更加深入地了解日期和时间在Java开发中的处理方法。
