Java 日期和夏令时

标签 java date dst

我正在尝试使用 for 循环并递增 Date 对象来打印一天中的所有小时。 但我不能有“Sun Mar 25 02:00:00”,我只有这些:

Sun Mar 25 01:00:00 CET 2012
Sun Mar 25 03:00:00 CEST 2012
Sun Mar 25 03:00:00 CEST 2012
Sun Mar 25 04:00:00 CEST 2012
Sun Mar 25 05:00:00 CEST 2012

我对时区不感兴趣。 我认为问题是由于夏令时造成的,但我需要“Sun Mar 25 02:00:00”。 我该如何创建该日期?

最佳答案

您可能需要一个针对 UTC 设置的 DateFormat 对象(不遵守夏令时),使用设置为 UTC 的日历也会大大简化事情。

public static void main(String[] args) {
    TimeZone utc = TimeZone.getTimeZone("UTC");
    Calendar date = Calendar.getInstance(utc);
    DateFormat format = DateFormat.getDateTimeInstance();
    format.setTimeZone(utc);
    date.set(2012, 02, 24, 23, 00, 00);
    for (int i = 0; i < 10; i++) {
        System.out.println(format.format(date.getTime()));
        date.add(Calendar.HOUR_OF_DAY, 1);
    }
}

这提供了以下输出:

Mar 24, 2012 11:00:00 PM
Mar 25, 2012 12:00:00 AM
Mar 25, 2012 1:00:00 AM
Mar 25, 2012 2:00:00 AM
Mar 25, 2012 3:00:00 AM
Mar 25, 2012 4:00:00 AM
Mar 25, 2012 5:00:00 AM
Mar 25, 2012 6:00:00 AM
Mar 25, 2012 7:00:00 AM
Mar 25, 2012 8:00:00 AM

当然,您可以使用格式化程序来按照您喜欢的方式格式化日期。

关于Java 日期和夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201469/

相关文章:

Python MySQLdb 不正确的日期时间值 : '2018-03-25 02:00:02'

javascript - 如何检查 DST(夏令时)是否有效,如果有效,偏移量?

java - 制作一套未装饰的可移动选项卡面板

java - 通过比较日期从列表中删除项目

java - 夏令时导致我们的系统出现问题

javascript - NodeJS倒计时: How do I define minutes?

date - 时间序列Stata日期每天转换为季度返回科学记数法

Java - 从 HttpURLConnection 读取 POST 抛出响应代码 400

java - 原始包装器和静态 "TYPE"类对象

java - Spring 事务 - 在 Sybase 过程中创建临时表时出现 Propagation.REQUIRED 问题