Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 带有格式字符串的NSDateFormatter以短样式输出时间_Ios_Swift_Nsdateformatter - Fatal编程技术网

Ios 带有格式字符串的NSDateFormatter以短样式输出时间

Ios 带有格式字符串的NSDateFormatter以短样式输出时间,ios,swift,nsdateformatter,Ios,Swift,Nsdateformatter,我们生产了一个iOS应用程序,我们使用一些自定义格式来表示内部日期 我存储了一个全局日期格式化程序,如下所示: static var InternalDateFormatter: NSDateFormatter = { let dateFormatter: NSDateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyyMMdd HH':'mm" return dateFormatter }() s

我们生产了一个iOS应用程序,我们使用一些自定义格式来表示内部日期

我存储了一个全局日期格式化程序,如下所示:

static var InternalDateFormatter: NSDateFormatter = {
    let dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
    return dateFormatter
}()
static var InternalDateFormatter: NSDateFormatter = {
    let dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
    dateFormatter.timeZone   = NSTimeZone.localTimeZone()
    dateFormatter.locale     = NSLocale(localeIdentifier: "en_US_POSIX")
    return dateFormatter
}()
使用
NSDate
实例
2016-07-21T16:46:51+0000
时,预期输出为
20160721 16:46
,但在2部手机中,输出为
20160712下午4:41

该设备是带有iOS 9.3的iPhone 5。
我试着在一台设备上安装,同一型号,同一iOS版本,结果是正确的


有人能让我看一下那里发生了什么吗?

您应该将
时区和
区域设置设置为日期格式化程序,如下所示:

static var InternalDateFormatter: NSDateFormatter = {
    let dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
    return dateFormatter
}()
static var InternalDateFormatter: NSDateFormatter = {
    let dateFormatter: NSDateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyyMMdd HH':'mm"
    dateFormatter.timeZone   = NSTimeZone.localTimeZone()
    dateFormatter.locale     = NSLocale(localeIdentifier: "en_US_POSIX")
    return dateFormatter
}()
使用
en\u US\u POSIX
locale ID将始终为您提供
am-pm
US时间标准。

但您可以选择任何奇怪的区域设置ID-

。您是否尝试过删除派生数据并将项目重建到受影响的设备上?默认情况下,NSDateFormatter的时区属性是系统的时区