如何将指定日期转换为UTC开始日期时间和结束日期时间。
String date = "2017-01-01"
//Needed startDate as 2017-01-01T00:00:00Z
//and end date as 2017-01-01T23:59:59Z
答案 0 :(得分:0)
这取决于你的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
希望它有所帮助!
答案 1 :(得分:0)
使用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