Joda-Time DateTimeFormatter 日期格式化与解析

一、前言

在进行开发工作中,经常会面对两种操作。
1、把时间对象格式化成字符串后存储下来
1、把格式化好的字符串解析成时间对象
Joda-Time为这两个核心需求的解决方案就是DateTimeFormatter。
额外提一点,DateTimeFormatter在格式化和解析时是支持时区的。

二、核心对象:

2.1 DateTimeFormatter

日期格式化与解析

2.2 LocalDate

本地日期(没有时间,没有时区)

2.3 LocalTime

本地时间(没有日期,没有时区)

2.4 LocalDateTime

本地日期时间(没有时区)

2.5 DateTime

日期时间(支持时区转换)

三、示例

1、当前日期yyyy-MM-dd格式化

        //当前本地日期,没有时区
        LocalDate date = LocalDate.now();
        //时间日期格式化,表达式与熟知的一样
        DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
        //2018-11-29
        String dateStr = fmt.print(date);

2、当前日期时间yyyy-MM--dd HH:mm:ss格式化

        //当前日期时间,没有时区
        LocalDateTime now = LocalDateTime.now();
        //日期格式化,通用时间表达式
        DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        //2018-11-29 08:08:24
        String nowStr = fmt.print(now);

3、解析日期时间并使用系统时区(example: 2019-10-28 10:23:12 )

        String dateStr = "2019-10-28 10:23:12";
        //根据时间表达式生成DateTimeFormatter对象
        DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
        //2019-10-28T10:23:12.000+08:00
        DateTime dateTime = fmt.parseDateTime(dateStr);

3、解析日期时间并设置时区 (example:2019-10-28 10:23:12)

        String dateStr = "2019-10-28 10:23:12";
        //日期解析,通用时间表达式
        DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withZone(DateTimeZone.forOffsetHours(6));
        //2019-10-28T10:23:12.000+06:00
        DateTime dateTime = fmt.parseDateTime(dateStr);

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,`DateTimeFormatter`是一个强大的工具,用于将日期和时间字符串转换为`LocalDateTime`、`ZonedDateTime`等对象,以及相反的操作。这里列举一些常见的`DateTimeFormatter`常量及其对应的日期格式: 1. **DateTimeFormatter.BASIC_ISO_DATE**: 这个常量表示ISO 8601基本格式的日期,即"yyyy-MM-dd"。比如,"2023-04-15"会被解析为日期2023年4月15日。 2. **DateTimeFormatter.RFC_1123_DATE_TIME**: 格式类似于 "EEE, dd MMM yyyy HH:mm:ss zzz", 用于HTTP/1.1的日期时间,例如 "Sun, 15 Apr 2023 12:30:00 GMT"。 3. **DateTimeFormatter.ISO_LOCAL_DATE**: 表示本地日期,如 "yyyy-MM-dd",但不包含时间部分。 4. **DateTimeFormatter.ISO_DATE**: 类似于ISO_LOCAL_DATE,但只包含年和月,没有日。 5. **DateTimeFormatter.ISO_LOCAL_DATE_TIME**: 包含了年、月、日、小时、分钟和秒,但没有时区信息。 6. **DateTimeFormatter.ISO_ZONED_DATE_TIME**: 适用于包含时区信息的日期时间,格式是 "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"。 7. **DateTimeFormatter.MYSQL**: MySQL数据库特定的日期时间格式,比如 "yyyy-MM-dd HH:mm:ss"。 8. **DateTimeFormatter.JODA_TIME**: Joda-Time库的日期时间格式,可能包括 "yyyy-MM-dd HH:mm:ss" 或 "yyyy-MM-dd HH:mm:ss.SSS"。 使用这些常量时,你可以直接创建一个`DateTimeFormatter`实例,并用它来解析或格式化日期字符串。例如: ```java DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE; String dateString = "2023-04-15"; LocalDate date = LocalDate.parse(dateString, formatter); ``` 如果你需要自定义格式,可以使用`DateTimeFormatter.ofPattern()`方法,传入具体的模式字符串。这样会更加灵活,但解析和生成的字符串必须遵循指定的模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值