java - 即使在 Java 中未选中 Systems Daylight 选项,也始终使用 Java 中的夏令时获取时区
问题描述
我正在尝试Timezone
使用 Java阅读
String timeZone = TimeZone.getDefault().getId();
Timezone
如果启用夏令时,它会给我正确的信息,但如果它被禁用,它会给我 GMT 的结果。我希望不会得到 GMT,与系统设置无关。
Java中有没有办法始终将DST的结果设为ON?
例如 Goto Systems(Windows) -> ChangeDateandTimeSettings -> Change Timezone -> Set Timezoene to UTC+00:00 Dublin,Edinburg,Lisbon,London 现在运行上面的代码并选中 Automatically Adjust Sytems time 你会得到结果“Europe/ London"现在禁用复选框,您将获得结果为GMT,在这两种情况下,我都希望结果为Europe/London
解决方案
可能您可以尝试获取某个时期的天数。
以下方法查找期间开始日期到期间结束日期之间的天数。这意味着开始日期被计算为期间内的天数,而不是结束日期。例如,1 月 1 日至 1 月 10 日总共包括 9 天。此方法将夏令时考虑在内,以确保跨 DST 边界正确计算天数。
例如,
import org.joda.time.Days;
import org.joda.time.LocalDate;
// …
public int getDaysInPeriod() {
final LocalDate start;
final LocalDate end;
final int daysInCycle;
if (end.isBefore(start) || end.isEqual(start)) {
return 0;
}
return Days.daysBetween(start, end).getDays();
}
希望这可以帮助。
推荐阅读
- c - 如何找到给定目标数量所需的最小硬币数量(与现有数量不同)
- c++ - 存储在静态 std::list 中的指针的 Valgrind 错误内存泄漏
- requirejs - 将 videojs 7 添加到 magento 2.4
- html - 请更正此 QueryStringParameter
- javascript - 在 react 如何使用可重用组件作为 React Component 传递到 react-router-dom 组件道具?
- azure - 错误 ASPCONFIG:无法加载文件或程序集'CrystalDecisions.CrystalReports.Engine,版本 = 13.0.2000.0 Azure DevOps CI Pipline
- python - 如何在 python 中 __scrap__ 第二个标签与 BeautifulSoup 的链接
- c# - 在 Crystal Report 上将背景图像固定为 100%
- node.js - 如何检查 Angular 8 中的会话
- javascript - 向填充有数据表的现有表添加额外的列