欢迎访问宙启技术站
智能推送

Java中的时间格式化函数SimpleDateFormat的用法

发布时间:2023-06-21 19:21:20

在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开发中的处理方法。