我正在使用Alamofire 4.0和Swift 3.0
我应该在我的网络服务中使用时区发布当前日期和时间。
当我尝试在控制台中打印时,我得到正确的当前时间,但是当使用Alamofire将数据推送到Web服务时,日期和时间会更改/增加8小时。
这是我正在尝试的代码。请帮助我,让我明白何时以及为什么会出错
let now = NSDate();
let formatter = DateFormatter();
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzz";
let defaultTimeZoneStr = formatter.string(from: now as Date);
print(defaultTimeZoneStr)
Alamofire.request("http:********", method: .post, parameters: ["id": 1, "date" : defaultTimeZoneStr, "value": "null", "publisher": "Jack", "title": "Time Warner, "url": "internet/6/"], encoding: JSONEncoding.default).responseString
{
response in
print("Success: \(response.result.isSuccess)")
print("Response String: \(response.result.value)")
}
所以在控制台中,defaultTimeZoneStr将是我当前的时间。但在网络服务中,它将延迟8小时
请帮忙。
谢谢。
答案 0 :(得分:1)
zzz
返回缩写的时区显示名称。
你应该知道:
时区显示名称不是唯一的。例如,常用的PST
可以代表太平洋标准时间(UTC-08)和菲律宾标准时间(UTC + 08)。
时区显示名称可以在不同语言中有所不同。您尚未为格式化程序设置区域设置,因此名称可以是随机的。
简而言之,如果您需要标准格式,请不要使用zzz
,例如用于API调用。使用其中一个Z
或X
变体。
答案 1 :(得分:0)
这是关于你的模拟器或手机时区。它始终与UTC一起使用。
在我看来,你总是使用UTC 0。