Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 3 NSDate_Ios_Swift_Date_Nsdateformatter - Fatal编程技术网

Ios 将日期字符串转换为Swift 3 NSDate

Ios 将日期字符串转换为Swift 3 NSDate,ios,swift,date,nsdateformatter,Ios,Swift,Date,Nsdateformatter,我有一个日期字符串: 2017年3月25日星期三05:30:00 GMT+0530 IST 我想将此字符串转换为Swift 3中的日期对象 我已参考和,用于生成此日期字符串的格式,但无法获得正确的格式。1如果您的字符串包含诸如IST或GMT差异之类的时区名称,则可以使用NSDATEDETERECTOR,如中所述: var dateString = "Wed, 25 Mar 2017 05:30:00 +0000" var dateFormatter = DateFormatter() dateF

我有一个日期字符串:

2017年3月25日星期三05:30:00 GMT+0530 IST

我想将此字符串转换为Swift 3中的日期对象

我已参考和,用于生成此日期字符串的格式,但无法获得正确的格式。

1如果您的字符串包含诸如IST或GMT差异之类的时区名称,则可以使用NSDATEDETERECTOR,如中所述:

var dateString = "Wed, 25 Mar 2017 05:30:00 +0000"
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
var dateFromString = dateFormatter.date(from: dateString)
print(dateFromString)
2017年3月25日上午5:30//日期转换为当地时区 2017-03-25 00:00:00+0000//GMT时间打印值

2或如果您知道如何从字符串中删除GMT和IST引用,请尝试以下操作:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, MMM d yyyy HH:mm:ss Z"
let date = dateFormatter.date(from: "Wed Mar 25 2017 05:30:00 +0530")!
print(date)
它会给你

2017年3月25日上午5:30//日期转换为当地时区 2017-03-25 00:00:00+0000//GMT时间打印值


正如我所说,问题不在于代码,问题在于我无法获得所提到的日期字符串的格式。这一个很有趣。格式EEE-MMM-dd-yyyy-HH:mm:ss'GMT'Z应该可以使用。该格式将日期对象格式化为问题中所示的相同格式,并将正确解析问题中所示格式的字符串,但仅当它是其他时区时。DateFormatter似乎不喜欢IST时区。我使用我提到的格式解析字符串Wed Mar 25 2017 05:30:00 GMT-0500 CDT时没有遇到任何问题。IST时区肯定存在问题。请看。由于它是不明确的,DateFormatter在解析时无法处理它。IST是不明确的,因为它同时代表爱尔兰标准时间和印度标准时间Wed,2017年3月25日05:30:00+0000它不是OPok要求的同一字符串,然后只需将DateFormatter更改为:DateFormatter.dateFormat=E,MMM d yyyy HH:mm:ss zt那还是不一样。细节很重要。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, MMM d yyyy HH:mm:ss Z"
let date = dateFormatter.date(from: "Wed Mar 25 2017 05:30:00 +0530")!
print(date)