栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法理解“ YYYY-MM-DDTHH:MM:SS”日期格式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法理解“ YYYY-MM-DDTHH:MM:SS”日期格式

    LocalDateTime dateTime = LocalDateTime.parse("2018-01-30T23:59:59.000");    System.out.println(dateTime);

打印:

2018-01-30T23:59:59

您的字符串为ISO 8601格式。UTC或协调世界时不是一种格式,它是一种标准时间,用于定义我们各自时区中其余时间的使用时间。

您正在使用的日期时间类

SimpleDateFormat
Date
早已过时,尤其是前者特别麻烦。我建议您改为使用
java.time
现代Java日期和时间API。与之合作真是太好了。

A

LocalDateTime
是具有一天中的时间,没有时区或与UTC偏移的日期。它的单参数
parse
方法解析ISO
8601,这就是为什么不需要显式格式化程序的原因。

您的代码出了什么问题

您的格式模式字符串有很多问题。这就是为什么您应该在没有任何显式格式化程序的情况下欣赏上述解决方案的原因之一。出问题的第一件事是:格式模式字符串的冒号

:
介于秒和毫秒之间,而日期时间的字符串则带有点
.
。这就是为什么您会得到例外。

但是,解决此问题,您的代码将产生以下结果

Date

周日2017年12月31日23:00:00

与预期的日期有一个月的距离,而分钟和秒数也丢失了。因为:

  • 大写字母
    YYYY
    是基于星期的年份,仅与星期数一起使用。您需要
    yyyy
    一年的小写字母。
  • 大写
    DD
    是一年中的一天。您需要
    dd
    在每月的某天使用小写字母。
  • 您正确使用大写字母
    MM
    表示月份。再尝试几分钟,将无法正常工作。也许您现在可以猜测:它是小写字母
    mm
  • 毫不奇怪,您需要小写
    ss
    几秒钟。
  • 使用
    MS
    毫秒很有趣。
    SimpleDateFormat
    将其作为
    M
    月份(我们已经有过两次),以大写
    S
    表示毫秒。取而代之的是,您需要
    SSS
    三位毫秒的大写字母。

链接

  • Oracle教程:Date Time解释如何使用
    java.time
  • 维基百科文章:ISO 8601
  • Wikipedia article: Coordinated Universal Time on UTC


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号