【发布时间】:2020-02-23 15:12:51
【问题描述】:
我想得到一个没有时间的日期,但总是失败。 以下是我的代码:
long curLong = System.currentTimeMillis();
curLong = curLong - curLong % TimeUnit.DAYS.toMillis(1);
Date date = new Date(curLong);
System.out.println("date = " + date);
输出:
date = Mon Oct 28 08:00:00 CST 2019
有人知道为什么吗?谢谢
【问题讨论】:
-
因为
java.util.Date代表一个瞬间。您应该改用java.timeAPI,例如LocalDate。 -
LocalDate.now()怎么样? -
一般建议:不要使用
java.util.Date或java.sql.Date、java.util.Calendar以及所有相关类。忽略所有告诉您使用它们的 StackOverflow 或互联网建议。仅使用java.time类,并且只允许遗留代码中的上述类。 -
你所写的应该在格林威治标准时间午夜。我不知道为什么会转换为 8 AM CST。加起来似乎不对。
-
@khelwood 格林威治标准时间 00:00t 与中国标准时间 08:00 一致,因此这可能是 CST 在这种情况下所代表的意思。这个问题也是从中国南京发布的。那些 d*rn 模棱两可的时区缩写……
标签: java java.util.date date