Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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 Swift日期格式化程序-日期与字符串不同_Ios_Swift_String_Date_Date Format - Fatal编程技术网

Ios Swift日期格式化程序-日期与字符串不同

Ios Swift日期格式化程序-日期与字符串不同,ios,swift,string,date,date-format,Ios,Swift,String,Date,Date Format,我有以下字符串,我想将其转换为日期: "November 8, 2018 12:30 PM" 我正在做的是下一步: let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MMM d, yyyy h:mm a" let date = dateFormatter.date(from: "November 8, 2018 12:30 PM") 但是我越来越 2018

我有以下字符串,我想将其转换为日期:

"November 8, 2018 12:30 PM"
我正在做的是下一步:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d, yyyy h:mm a"
let date = dateFormatter.date(from: "November 8, 2018 12:30 PM")
但是我越来越

2018-11-08 18:30:00 +0000

我不知道为什么。有什么提示吗?

日期格式化程序隐式使用当前时区,这意味着它将该日期解释为本地时间,然后将其转换为不带时区的日期对象(UTC+0)。看起来你的当地时间是UTC-6?如果我运行您的代码,我会得到
2018-11-8 17:30:00+0000
,因为我住在UTC-5

如果您使用相同的格式化程序将日期转换回字符串,您将得到与输入的字符串相同的字符串

dateFormatter.string(from: date)

因此,没有任何信息丢失。如果字符串需要在当前时区以外的其他时区中进行解释,则需要在解析之前设置格式化程序的
时区属性。

日期格式化程序隐式使用当前时区,这意味着它将该日期解释为本地时间,然后将其转换为不带时区的日期对象(UTC+0)。看起来你的当地时间是UTC-6?如果我运行您的代码,我会得到
2018-11-8 17:30:00+0000
,因为我住在UTC-5

如果您使用相同的格式化程序将日期转换回字符串,您将得到与输入的字符串相同的字符串

dateFormatter.string(from: date)

因此,没有任何信息丢失。如果您的字符串需要在当前时区以外的其他时区进行解释,则需要在解析它之前设置格式化程序的
时区属性。

我喜欢使用一些工具

您明确查找的格式是
“MMMM d,yyyy h:ma”

您的代码应该如下所示:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM d, yyyy h:m a"
let date = dateFormatter.date(from: "November 8, 2018 12:30 PM")
let dateString = dateFormatter.string(from: date!)


我喜欢使用一些工具

您明确查找的格式是
“MMMM d,yyyy h:ma”

您的代码应该如下所示:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM d, yyyy h:m a"
let date = dateFormatter.date(from: "November 8, 2018 12:30 PM")
let dateString = dateFormatter.string(from: date!)


使用
dateFormatter.string(from:date)
。请注意,您使用了错误的DateFormat。MMM是一个月3个字母。您需要使用MMMM
“MMMM d,yyyy h:mm a”
,并且在设置日期格式之前,不要忘记将日期格式设置器的区域设置为“en_US\u POSIX”。请使用
日期格式设置器。字符串(from:date)
。请注意,您使用了错误的DateFormat。MMM是一个月3个字母的完整月份。您需要使用MMMM
“MMMM d,yyyy h:mm a”
,并且在设置日期格式之前,不要忘记将日期格式设置器的区域设置设置为“en_US_POSIX”。如果设备12-24小时设置为24小时,则可能会崩溃。如果设备12-24小时设置为24小时,则可能会崩溃