冬季/夏季的快速时区

时间:2015-07-24 22:49:25

标签: swift time timezone

我正在研究一个世界时钟,我已经把时间用于各个国家:

    let date = NSDate(); 
    var beltz = NSDateFormatter();
    beltz.dateFormat = "HH:mm";
    beltz.timeZone = NSTimeZone(name: "Europe/Brussels")
    let belTzStr = beltz.stringFromDate(date);
    println(belTzStr) //<-- correct time

我的问题是夏季/冬季时间调整+ - 1小时,这个调整是否会反映在NSTimeZone的代码中?如果没有,我如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

考虑这个修改后的代码:

let cal = NSCalendar.currentCalendar()
cal.timeZone =  NSTimeZone(name: "America/Phoenix")!
let date = cal.dateWithEra(1, year: 2015, month: 12, day: 24, hour: 16, minute: 0, second: 0, nanosecond: 0)!
//date = NSDate();
var beltz = NSDateFormatter();
beltz.dateFormat = "dd MMMM HH:mm zzzz";
beltz.timeZone = NSTimeZone(name: "Europe/Brussels")
let belTzStr = beltz.stringFromDate(date);
print(belTzStr) //<-- correct time

我修改了你的代码以添加时间作为Phoenix AZ,它不使用夏令时并添加了一些额外的格式,特别是TZ到打印数据。

现在,如果您使用12月(在任一地区都没有DST)

let date = cal.dateWithEra(1, year: 2015, month: 12, day: 24, hour: 16, minute: 0, second: 0, nanosecond: 0)!

你得到了

12月25日00:00欧洲中部标准时间

如果你使用July(欧盟的DST)

let date = cal.dateWithEra(1, year: 2015, month: 7, day: 24, hour: 16, minute: 0, second: 0, nanosecond: 0)!

你得到了

7月25日01:00欧洲中部夏令时

所以是的,它会适当调整TZ。