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小时,则可能会崩溃