【发布时间】:2020-04-29 00:46:57
【问题描述】:
我正在使用 java.time 将日期时间转换为 unix 时间,但是当我有不同的输入格式时,结果并不总是正确的。在下面的代码中,输出不正确。它将“2016-06-21-10-19-22”转换为 2016-06-21T00:00:00+00:00。
如果输入为“04/28/2016”、“MM/dd/yyyy”,则结果正确。
我想知道如何编写一个函数,可以将带时间的日期和不带时间的日期转换为正确的 timeInSeconds?
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd-HH-mm-ss");
String dateTimeString = "2016-06-21-10-19-22";
LocalDate date = LocalDate.parse(dateTimeString, formatter);
ZonedDateTime resultado = date.atStartOfDay(ZoneId.of("UTC"));
Instant i = resultado.toInstant();
long timeInSeconds = i.getEpochSecond();
int nanoAdjustment = i.getNano();
System.out.println("" + timeInSeconds + " seconds " + nanoAdjustment + " nanoseconds");//1466467200 seconds 0 nanoseconds
【问题讨论】: