我正在尝试从具有以下条件的对象( ) 生成Date
对象 ( ):java.util.Date
LocalDate
java.time.LocalDate
Date
允许一个可以从对象中减去一定天数的参数- 将日期和时间设为当前 UTC 中的日期和时间
- 在一天的开始有时间,即
00:00:00
- 时区戳(即 CDT 或 UTC)是无关紧要的,因为我从
String
为了满足这个标准,我创建了一个测试程序,但是当我修改LocalDate
. 请参见下面的代码:
public static void main (String args[]) {
Long processingDaysInPast = 0L;
LocalDate createdDate1 = LocalDate.now(Clock.systemUTC()).minusDays(processingDaysInPast);
LocalDate createdDate2 = LocalDate.now(Clock.systemUTC()).minusDays(processingDaysInPast);
System.out.println(createdDate1);
System.out.println(createdDate1.atStartOfDay().toInstant(ZoneOffset.UTC));
System.out.println(Date.from(createdDate1.atStartOfDay().toInstant(ZoneOffset.UTC)));
System.out.println((createdDate2.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
System.out.println(Date.from(createdDate2.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()));
}
输出:
2017-08-14
2017-08-14T00:00:00Z
Sun Aug 13 19:00:00 CDT 2017
2017-08-14
2017-08-14T05:00:00Z
Mon Aug 14 00:00:00 CDT 2017
当我添加值时,Date.from(createdDate1.atStartOfDay().toInstant(ZoneOffset.UTC))
我得到了日期的预期输出,带有00:00:00
时间字段。但是,如果我不添加这个参数,例如:Date.from(createdDate2.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())
我得到了前一天的结果,19:00:00
为什么会这样?
我的主要目标是能够Date
使用当前的 UTC 日期和时间归零 ( StartOfDay
) 来捕获对象。