簡體   English   中英

在Java中,是否可以將日期和時間轉換為沒有時區的ISO 8601格式的字符串?

[英]In Java, Can I Convert A Date and Time To An ISO 8601 formatted String Without A Timezone?

舊源系統的歷史記錄表具有2個有關日期/時間的字段:日期(例如:12/20/2017)字符串和時間(14:33:00)字符串。 我沒有可以使用的時區信息。 UI團隊正在使用我正在創建的Web服務,該團隊希望此信息為ISO 8601格式的String。 我正在使用Java8。是否可以創建沒有時區的ISO 8601格式的String版本以返回UI?

是的,您可以使用DateTimeFormatter ISO_LOCAL_DATE_TIME來格式化沒有時區的格式:

String input = "12/20/2017 14:33:00";
DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
LocalDateTime date = LocalDateTime.parse(input, inputFormat);
String output = DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(date);
System.out.println(output);

輸出:

2017-12-20T14:33:00

shmosel的答案是正確的。 我會發現在代碼中明確指出日期和時間來自不同的字段會更加清晰明了:

    String dateString = "12/20/2017";
    String timeString = "14:33:00";

    DateTimeFormatter dateInputFormat = DateTimeFormatter.ofPattern("MM/dd/uuuu");
    String iso8601DateTimeString = LocalDate.parse(dateString, dateInputFormat)
            .atTime(LocalTime.parse(timeString))
            .toString();

這將產生符合ISO 8601的2017-12-20T14:33

可以使用format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)代替toString() format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) 有趣的是,它並不總是產生相同的結果:我們現在得到2017-12-20T14:33:00 ,即,即使它們是0,也給出秒。這兩個版本都符合ISO 8601。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM