如何在Swift 2中获取和设置日期/日历区域设置?

时间:2015-11-25 18:37:03

标签: date nsdate swift2 date-formatting

我完全是Swift 2新手并且遇到了日期格式化问题。

我的系统设置为“瑞士德语”,日期格式应格式为“25。2015年11月19:25:56”

但是,playground的结果侧栏显示“2015年11月25日,下午7:25”:日期格式化美国风格和AM / PM而不是24小时格式。

我试过

var myDate = NSDate()
print("date string:",myDate)
print(myDate.description)  // no ouput

输出:

date string: 2015-11-25 18:21:58 +0000
2015-11-25 18:21:58 +0000

// How to check which locale Swift 2 is using?

我真的很感激任何帮助!

谢谢, 罗兰

2 个答案:

答案 0 :(得分:0)

我不知道如何强制Playground环境使用您的语言环境,但您可以在自己的代码中执行此操作。

import Foundation
print(NSDate())
print(NSDate().descriptionWithLocale(NSLocale(localeIdentifier: "zh_TW")))
print(NSDate().descriptionWithLocale(NSLocale(localeIdentifier: "de_DE")))

...输出是......

2015-11-25 19:24:53 +0000
2015年11月25日 星期三 中歐標準時間 下午8:24:53
Mittwoch, 25. November 2015 um 20:24:53 Mitteleuropäische Normalzeit

... 检查NSDateFormatter以获取更多信息

答案 1 :(得分:0)

如果您只是打印日期,它将在" debug"模式,不会应用区域设置或时区。

以所需格式获取日期的正确方法是使用NSDateFormatter。然后,您可以应用时区和格式或区域设置。

import Foundation

var myDate = NSDate()
print(myDate.description)

let formatter = NSDateFormatter()

formatter.timeZone = NSTimeZone.localTimeZone()
formatter.dateFormat = "dd'.' MMM'.' yyyy HH':'mm':'ss"

print(formatter.stringFromDate(myDate))

以上打印

2015-11-26 11:55:55 +0000
26. Nov. 2015 11:55:55

我在英国。如果我将我的电脑设置为中欧时间,我会

2015-11-26 11:59:51 +0000
26. Nov. 2015 12:59:51