我需要cst时间00:00:00以下格式的当前日期。
比如说当前日期是2021年7月9日,那么我需要这个日期和00:00:00时间。
预期产出: Fri Jul 09 00:00:00 CST 2021
当前代码:
LocalDateTime date= LocalDateTime.now().with(LocalTime.MIN);
Date dayStart= Date.from(date.atZone(ZoneId.systemDefault()).toInstant());
currentcode的输出: Fri Jul 09 00:00:00 UTC 2021
当前代码拾取服务器时间/gmt,比cst提前5小时。
例子: 09AM GMT is 14 CST/2PM CST
我已尝试将日历设置为00:00:00,并将时区设置为美国/纽约。但是,当我以calendar.gettime()返回输出时,请给我一些其他时间,而不是cst 00:00:00。
尝试: @scheduled(zone="America/New_york" )
--不工作。
3条答案
按热度按时间x9ybnkn61#
有两个很好的答案。我的建议只是在细节上有所不同(根据一些人的说法,这就是问题所在)。
首先,你应该避免使用
Date
如果可以,请上课。您已经在使用java.time,即现代java日期和时间api(LocalDateTime
,LocalTime
,ZoneId
). 您正在从java.time获得所需的所有功能。所以我假设你只是转换成Date
因为你需要一个Date
对于一些您现在无法升级到java.time的遗留api。sqserrrh2#
更改时区最简单的方法是使用system.setproperty(“user.timezone”,“america/new_york”);在java中注意:美国/纽约不是cst
bqujaahr3#
你可以试着使用
ZonedDateTime
以特定的方式ZoneId
:这个输出
缺点:
这将无法完全匹配您的预期输出,因为
CST
未应用,因为它是夏令时。所以,,CDT
将是输出。采取行动
Date.from
这ZonedDateTime.toInstant()
将影响以下值:应用这两条线
将输出