小编典典

tl; dr

其中秒和毫秒为00000,这是解析器失败时

不,解析器成功。您的问题是生成一个字符串,而不是解析。

默认DateTimeFormatter抑制秒和分数第二零个值,如记录。

功能,而非错误

您的问题不在于解析,而在于解析后生成字符串。请记住,日期时间对象的文本表示形式是不同的,并且与对象分离。换句话说,日期时间对象没有“格式”。

[String]-> parse-> [LocalDateTime]-> toString-> [String]

的文档LocalDateTime::toString明确指出,当在最低有效部分中遇到零值时,将使用尽可能短的格式变化。报价:

输出将是以下ISO-8601格式之一:

uuuu-MM-dd’T’HH:mm

uuuu-MM-dd’T’HH:mm:ss

uuuu-MM-dd’T’HH:mm:ss.SSS

uuuu-MM-dd’T’HH:mm:ss.SSSSSS

uuuu-MM-dd’T’HH:mm:ss.SSSSSSSSS

所使用的格式将是最短的格式,用于输出被省略部分隐含为零的时间的完整值。

例子

关于YCF_L接受的答案中显示的两个示例……

20180301091600001结果是2018-03-01T09:16:00.001

在该示例中,最低有效部分(毫秒)具有非零值,因此将其表示在结果中。

2018030100000000结果是2018-03-01T00:00

在该示例中,小时,分钟,秒,毫秒,微秒和纳秒的最低有效部分全部为零。因此,除了小时和分钟之外,它们的显示都被抑制了,因为文档承诺始终显示年-分钟。

因此,您的两个示例均如文档所述。功能,而不是错误。

解决方案是不使用该toString方法中提供的默认格式化程序。而是,使用另一个格式化程序。例如,使用为解析定义的同一自定义格式器。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "yyyyMMddHHmmssSSS" );

LocalDateTime ldt = LocalDateTime.parse( "20180301091600000" , f );

String outputDefault = ldt.toString();

String outputCustom = ldt.format( f );

转储到控制台。

System.out.println( "outputDefault: " + outputDefault );

System.out.println( "outputCustom: " + outputCustom );

输出默认值:2018-03-01T09:16

输出自定义:20180301091600000

问题问:

我如何解决它以使其打印2018-03-01T09:16:00.000而不是2018-03-01T09:16?

指定自定义格式器,而不是默认格式器。

DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss:SSS") ;

String output = ldt.format( f ) ;

但是请记住,生成的String会抑制LocalDateTime对象中任何微秒或纳秒的显示。

2020-10-18

java字符串时间去掉秒_Java:当秒和毫秒均为0时,DateTimeFormatter无法解析时间字符串吗?...相关推荐

  1. java date 没有毫秒_关于date:Java:秒和毫秒均为0时,DateTimeFormatter无法解析时间字符串吗?...

    基本上,我使用以下代码将字符串解析为LocalDateTime,在大多数情况下都可以正常工作. DateTimeFormatter dtformatter = DateTimeFormatter.of ...

  2. Mybatis中 Integer 值为0时,默认为空字符串的解决办法

    问题 需求是查询级别为0的用户 User对象里的level字段的值为0,查询时居然没有查到为level为0的用户. <select id="selectSelective" ...

  3. java日期加减秒_Java日期——年、月、日、时、分、秒、周加减计算

    Java日期--年.月.日.时.分.秒.周加减计算 Java日期--年.月.日.时.分.秒.周加减计算 1.Pom依赖 joda-time joda-time 2.9.9 2.示例代码 package ...

  4. Java获取当天或者明天等零点时间(00:00:00)0时0分0秒的方法

    SimpleDateFormat sdfYMD = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = ...

  5. Java获取当天(今日)零点时间(00:00:00)0时0分0秒的方法

    如果想通过Java获取当天的0点时间,有两种方式:一种是通过Calendar:另外一种是通过SimpleDataFormat.下面分别介绍. 1.Calendar 通过Calendar把时分秒字段清空 ...

  6. java取上一个月_java获取当前上一周、上一月、上一年的时间

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c=Calendar ...

  7. 离线java人脸识别开源算法_Java 离线人脸识别 基于ArcFace 2.0 Demo

    开发环境准备: 开发使用到的软件和工具: Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).libarcsoft ...

  8. java a[i].setx(-1);_java – setX和setY在尝试定位图像时不起作用

    我在使用setX上的setX和setY为我的JavaFX程序中定位图像时遇到问题.我不确定是什么问题?感谢任何给予的帮助! 这是我的代码: Image rocket2 = new Image(&quo ...

  9. java 并发框架源码_Java并发编程高阶技术-高性能并发框架源码解析与实战

    Java并发编程高阶技术-高性能并发框架源码解析与实战 1 _0 Z' @+ l: s3 f6 r% t|____资料3 Z9 P- I2 x8 T6 ^ |____coding-275-master ...

  10. java杀死自身并重启_java – android服务在应用程序被杀死时自动重启

    我正在开发一个应用程序,通过接收器与我的服务进行通信. 服务代码 @Override public int onStartCommand(Intent intent, int flags, int s ...

最新文章

  1. Squid下Http头信息优先级
  2. TCP和UDP的最完整的区别
  3. 插值MATLAB实现(牛顿差商、插值误差、龙格现象、切比雪夫插值)
  4. lambda表达式的日期问题
  5. 在微信小程序中使用字体图标
  6. Python中append()和extend方法的使用和区别
  7. blog微服务架构代码_Spring Cloud微服务架构代码结构详细讲解
  8. complex类模板c++_高中地理综合题答题模板,学霸们都收藏了!
  9. 元旦,请查收程序员专属祝福礼!
  10. 三宝小精灵机器人_三宝小精灵幼育机器人-引领幼教AI新浪潮
  11. 2021世界互联网大会“全体会议”发言干货都在这篇了
  12. win7更新_Win7最新更新!由微软亲自集成的安装包来袭!
  13. 网络工程师 第8章 网络安全
  14. JSFL自动绘画_2_三阶贝塞尔曲线画线
  15. uiautomatorviewer 提示 Error obtaining UI hierarchy 的解决办法
  16. Redis的一些知识
  17. 磁性开关的种类和工作原理
  18. L1-040 最佳情侣身高差 (10分)(C语言)
  19. 世界各地时间缩写_世界各地的天然气价格
  20. 非平衡电桥电阻计算_【2019年整理】用非平衡电桥测量电阻

热门文章

  1. Apache CXF 框架结构和基本原理
  2. 清华大学计算机杜瑜皓,我在清华等你来 | 金策:从容淡定 “金牌”之风
  3. 单片机c语言 一小时,1小时单片机C语言入门..doc
  4. NE555延时电路设计
  5. 使用38译码器扩展单片机接口
  6. 拍一拍身上的土(2009-12-12 01:17:43韩寒博客)
  7. 计算机应用基础图表填空,计算机应用基础试题
  8. WPF实现鼠标拖动框选功能
  9. python如何获取鼠标位置_python实时得到鼠标的位置
  10. exe机器码加密视频如何破解提取脱壳