如何在 Swift 2 中获取和设置 date/calendar 语言环境?

How to get and set date/calendar locale in Swift 2?

我总共 Swift 2 新手,并且被日期格式所困。

我的系统设置为 "Swiss-German",日期格式应为“25. Nov. 2015 19:25:56”

但 playground 的结果侧边栏显示 "Nov 25, 2015, 7:25 PM":美国风格的日期格式和 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?

如果有任何帮助,我将不胜感激!

谢谢, 罗兰

我不知道如何强制 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 了解更多信息

如果您只打印日期,它将以 "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