簡體   English   中英

將給定日期轉換為UTC日期時間

[英]Convert a given date to UTC date time

如何將給定日期轉換為UTC開始日期時間和結束日期時間。

String date = "2017-01-01"
//Needed startDate as 2017-01-01T00:00:00Z
//and end date as 2017-01-01T23:59:59Z

它取決於您的Java版本,並且與往常一樣,有很多方法可以解決此問題。 使用Java 8,您可以執行以下操作:

首先,您需要將日期解析為java.time.LocalDate

String date = "2017-01-01";
final LocalDate localDate = LocalDate.parse(date);
System.out.println(localDate);

哪些印刷品

2017-01-01

在此LocalDate您可以按以下類型將UTC開始和結束日期創建為java.time.ZonedDateTime類型。

final ZoneId utc = ZoneId.of("UTC");
final ZonedDateTime start = LocalDate.parse(date).atStartOfDay(utc);
final ZonedDateTime end = LocalDate.parse(date).atTime(23, 59, 59).atZone(utc);
System.out.println(end); 

此打印

2017-01-01T00:00Z[UTC]
2017-01-01T23:59:59Z[UTC]

注意結束日期,您也可以這樣做

final ZoneId utc = ZoneId.of("UTC");
final ZonedDateTime end = LocalDate.parse(date).atTime(LocalTime.MAX).atZone(utc);

這給了你幾位數

2017-01-01T23:59:59.999999999Z[UTC]

也可以看看

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html

希望能幫助到你!

該問題實際上是使用Java 8功能回答的。 但是,如果您像我一樣坐在舊版本的Java上,那么以下內容可能會達到目的,即使它不如其他解決方案那么優雅:

    String dateString = "2017-01-01"; 
    final SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd");
    // we need Calendar to manipulate date components
    Calendar cal = new GregorianCalendar();
    cal.setTime(sdfInput.parse(dateString));

    final SimpleDateFormat sdfOutput = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    String startDate = sdfOutput.format(cal.getTime());

    cal.set(Calendar.HOUR, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    String endDateString = sdfOutput.format(cal.getTime());

    System.out.println(startDate);
    System.out.println(endDateString);

輸出:

2017-01-01T00:00:00Z

2017-01-01T23:59:59Z

暫無
暫無

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

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