tl;博士
LocalDateTime.parse(
"2016-12-26 14:18:57.0".replace( " " , "T" )
)
.truncatedTo( ChronoUnit.SECONDS )
.toString()
.replace( "T" , " " )
避免使用旧的日期时间类
您正在使用麻烦的旧日期时间类,现在是遗留的,被 java.time 类取代。
ISO 8601
首先替换输入字符串中间的空格,使其符合标准 ISO 8601 格式。
String input = "2016-12-26 14:18:57.0".replace( " " , "T" );
LocalDateTime
解析为 LocalDateTime,因为您的输入字符串缺少任何与 UTC 或时区偏移的指示。
LocalDateTime ldt = LocalDateTime.parse( input );
只需调用toString 即可生成字符串。默认情况下,使用 ISO 8601 格式创建字符串。如果该值没有小数秒,则不会出现小数点或任何小数秒数字。
String output = ldt.toString ();
ldt.toString(): 2016-12-26T14:18:57
如果您不喜欢中间的T,请用空格替换。
output = output.replace( "T" , " " );
2016-12-26 14:18:57
如果您的输入可能带有小数秒,并且您想完全删除该部分数据而不是仅仅抑制其显示,请截断 LocalDateTime 对象。
LocalDateTime ldtTruncated = ldt.truncatedTo( ChronoUnit.SECONDS ); // Truncate any fraction of a second.
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
从哪里获得 java.time 类?
ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是未来可能添加到 java.time 的试验场。您可以在这里找到一些有用的类,例如Interval、YearWeek、YearQuarter 和more。