java 夏令时区,Java日期和夏令时

I'm trying to print all the hours of the day using a for loop and incrementing a Date object.

But I can't have "Sun Mar 25 02:00:00", I only have these:

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

I'm not interested in having the TimeZone.

I think that the problem is due to the Daylight Saving, but I need the "Sun Mar 25 02:00:00".

How can I do to create that date?

解决方案

You probably want a DateFormat object that is set up for UTC (which does not observe daylight savings), using a calendar set to UTC will also simplify things quite a bit.

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);

}

}

This provides the following output:

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

Of course, you can use the formatter to format your date however you like.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值