美文网首页
Java 日期格式中的坑

Java 日期格式中的坑

作者: Little丶Jerry | 来源:发表于2020-06-01 21:34 被阅读0次

    原文来自 前几天你因为 YYYY-MM-dd 翻车了吗?

    看完了来看看下面这段代码解释:

     /**
     说明:日期格式化时, yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year,意思是当天所在的周属于的年份,
    一周从周日开始,周六结束,只要本周跨年,返回的 YYYY 就是下一年。
     另外需要注意:
     表示月份是大写的 M
     表示分钟则是小写的 m
     24 小时制的是大写的 H
     12 小时制的则是小写的 h
     */
    
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String timeStr = "2019-01-01 00:00:00";
    LocalDateTime dateTime = LocalDateTime.parse(timeStr, formatter);
    
    System.out.println(dateTime + "\n" + dateTime.toLocalDate() + "\n" + dateTime.toLocalTime());
    

    输出

    2019-01-01T00:00
    2019-01-01
    00:00
    

    也就是说:年份如果用 Y 会是这周的年份,y 才是标准的年份。这一点官方文档没说明,所以还是自己注意点吧,以后转换日期格式的时候记得还是用 “yyyy-MM-dd” 这种格式吧,避免出现这种情况衍生的 bug。

    规范的日期格式:

    • 距离现在时间跨年,显示格式:
      中文:yyyy/mm/dd (2020年06月01日)
      英文:mm dd,yyyy (Jun 1,2020)

    相关文章

      网友评论

          本文标题:Java 日期格式中的坑

          本文链接:https://www.haomeiwen.com/subject/tjkezhtx.html