Java Date and Time系列(七)- java.text.SimpleDateFormat介绍

java.text.SimpleDateFormat类我们一般用来它实现字符串于java.util.Date之间的互转,比如将Date实例转换为指定的字符串表示形式,

或者将一个字符串的日期表示转为具体的Date实例。


创建SimpleDateFormat实例

可以像下面一样创建一个SimpleDateFormat实例:

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
其中pattern参数用来指定字符串和日期互转时的格式。


日期转换成字符串

使用format()方法可以将一个日期类型的值转换为字符串表示形式,比如:

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

String date = simpleDateFormat.format(new Date());
System.out.println(date); // 2013-12-04
注意,format()方法的参数必须是java.util.Date类型的实例。


字符串转换为日期

使用parse()方法可以可以将一个日期形式的字符串转换为一个java.util.Date类型:

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

Date date = simpleDateFormat.parse("2013-12-04");

根据具体的语言环境创建SimpleDateFormat实例

具体的语言环境可以通过Locale类表示,在这先不做介绍了。想通过具体语言环境来创建SimpleDateFormat实例可以像下面那样:

String pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
SimpleDateFormat simpleDateFormat =
        new SimpleDateFormat(pattern, new Locale("zh", "ZH")); //指定具体语言环境

String date = simpleDateFormat.format(new Date());
System.out.println(date);
输出如下:

星期三 十二月 2013 17:09:04.757+0800
我们发现星期和月份的表示都是中文的,如果new Locale("zh", "ZH")换成new Locale("en", "EN"),那输出就会变为:Wednesday December 2013 17:09:04.757+0800

常用日期格式

dd-MM-yy                            31-01-12
dd-MM-yyyy                          31-01-2013
MM-dd-yyyy                          01-31-2013
yyyy-MM-dd                          2013-01-31
yyyy-MM-dd HH:mm:ss 	            2013-01-31 23:59:59
yyyy-MM-dd HH:mm:ss.SSS             2013-01-31 23:59:59.999
yyyy-MM-dd HH:mm:ss.SSSZ            2013-01-31 23:59:59.999+0100
EEEEE MMMMM yyyy HH:mm:ss.SSSZ 	    Saturday November 2013 10:45:42.720+0100

当我们不使用`java.util.Date`和`java.text.SimpleDateFormat`类时,可以使用`java.time`包中的类来处理日期和时间。 1. `java.time.LocalDate`类表示一个日期,它只包含年、月、日的信息,没有时间和时区的概念。可以使用`LocalDate.now()`方法获取当前日期,也可以使用`LocalDate.of(year, month, day)`方法创建指定日期的对象。 2. `java.time.LocalTime`类表示一个时间,它只包含时、分、秒和毫秒的信息,没有日期和时区的概念。可以使用`LocalTime.now()`方法获取当前时间,也可以使用`LocalTime.of(hour, minute, second, nanoOfSecond)`方法创建指定时间的对象。 3. `java.time.LocalDateTime`类表示一个日期和时间,它包含年、月、日、时、分、秒和毫秒的信息,没有时区的概念。可以使用`LocalDateTime.now()`方法获取当前日期和时间,也可以使用`LocalDateTime.of(year, month, day, hour, minute, second, nanoOfSecond)`方法创建指定日期和时间的对象。 4. `java.time.format.DateTimeFormatter`类用于格式化和解析日期时间对象。可以使用`DateTimeFormatter.ofPattern(pattern)`方法创建一个格式化模式,然后使用`format()`方法将日期时间对象格式化为字符串,或者使用`parse()`方法将字符串解析为日期时间对象。 5. `java.time.Duration`类用于表示两个时间点之间的持续时间。可以使用`Duration.between(start, end)`方法计算两个时间点之间的持续时间,返回一个`Duration`对象,然后可以使用`toXXX()`方法获取持续时间的各个部分(如小时、分钟、秒等)。 6. `java.time.Period`类用于表示两个日期之间的间隔。可以使用`Period.between(start, end)`方法计算两个日期之间的间隔,返回一个`Period`对象,然后可以使用`getYears()`、`getMonths()`、`getDays()`等方法获取间隔的年、月、日等部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值