[英]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.