猿问

日期函数正在修剪秒,其中秒为 00

OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");

odtB.toString()

打印2019-02-02T13:55为输出。因为这个我的转换函数抛出错误!


SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM\''YY HH:mm aa");

String parsedDate = odtB.format(otdB);

当秒数为 00 时,如何停止 OffsetDateTime 或任何其他 Java DateTime 类修剪秒数?


翻阅古今
浏览 117回答 3
3回答

跃然一笑

在java8中,你就不需要SimpleDateFormat了,很麻烦。我建议使用ISO_OFFSET_DATE_TIME:ISO 日期时间格式化程序,用于格式化或解析带有偏移量的日期时间,例如“2011-12-03T10:15:30+01:00”。例子:import java.util.*;import java.time.*;import java.time.format.*;public class HelloWorld{     public static void main(String []args){        OffsetDateTime odtB = OffsetDateTime.parse("2019-02-02T13:55:00Z");        DateTimeFormatter f = DateTimeFormatter.ISO_OFFSET_DATE_TIME;        System.out.print(f.format(odtB)); // 2019-02-02T13:55:00Z     }}

繁华开满天机

SimpleDateFormat来自使用 Dates 的古老而过时的方式。它也不是线程安全的,并且还有很多其他问题。换句话说,不要使用它。您需要使用DateTimeFormatter请阅读 javadoc(提供的链接)。它详细解释了如何使用它。但是,您的问题的原因是在您的格式掩码中,您缺少占位符几秒钟,因此当您的字符串有几秒钟时,它不符合您的格式。将格式更改为dd-MMM-YY HH:mm:ss aa强调“ss” - 缺少秒占位符,它将起作用

HUX布斯

如果您使用java.time.LocalDateTime(从 Java 8 开始就应该使用),您可以使用不同DateTimeFormatter的 s,您可以配置(给它们一个模式)以不修剪尾随零。请参阅以下示例,使用String稍微调整模式的日期:LocalDateTime ldt = LocalDateTime.parse("2019-02-02T13:55:00Z", DateTimeFormatter.ISO_DATE_TIME);System.out.println(ldt.format(DateTimeFormatter.ofPattern("dd-MMM\''YY HH:mm:ss")));这将打印02-Feb'19 13:55:00,希望这是您想要的。
随时随地看视频慕课网APP

相关分类

Java
我要回答