如何从字符串返回预定义时区中的NSDate
let responseString = "2015-8-17 GMT+05:30"
var dFormatter = NSDateFormatter()
dFormatter.dateFormat = "yyyy-M-dd ZZZZ"
var serverTime = dFormatter.dateFromString(responseString)
println("NSDate : \(serverTime!)")以上代码返回的时间为
2015-08-16 18:30:00 +0000发布于 2020-04-28 19:55:44
数字1指的是1,而不管语言如何。但在英语中,它被拼成一个,在西班牙语中拼写为una,在阿拉伯语中拼写为wahid,等等。
同样地,1970年的123982373秒将在不同的时区或日历格式中反映不同的情况,但仍然超过1970年的123982373秒。
3秒和7秒的区别是4秒。这不需要日历。您不需要一个日历/时区来了解这两个Epoch times 1585420200和1584729000之间的时间差。
日期只是从1970年1月1日(午夜世界协调时/格林尼治标准时间)开始的timeInterval。日期也恰好具有字符串表示形式。
重复Nikolia的回答,Swift的默认字符串插值(2015-08-16 18:30:00 +0000)使用了一个使用UTC的DateFormatter (输出中的"+0000“)。
使用时区的日历给我们提供了一个上下文表示,它比试图计算两个巨大数字之间的差异更容易理解。
指的是单个日期(想象1970年以来的单个timeInterval ),每个日历都会有不同的字符串解释。最重要的是,日历本身将根据时区而变化。
我强烈建议您使用这个时代换流场,看看选择不同的时区将如何导致同一时刻/日期/时间timeInterval的字符串表示发生变化
我还建议您看看这个答案。主要是本部分:
时区只是对时间戳字符串的修改,它不受日期格式化程序的考虑。 要考虑时区,必须设置格式化程序的timeZone
dateFormatter.timeZone = TimeZone(secondsFromGMT: -14400)
https://stackoverflow.com/questions/32046550
复制相似问题