Swift 发送到web服务的日期错误
我正在使用Alamofire 4.0和Swift 3.0Swift 发送到web服务的日期错误,swift,swift3,nsstring,nsdate,nsdateformatter,Swift,Swift3,Nsstring,Nsdate,Nsdateformatter,我正在使用Alamofire 4.0和Swift 3.0 我应该在我的web服务中发布带有时区的当前日期和时间 当我尝试在控制台中打印时,我得到了正确的当前时间,但当使用Alamofire将数据推送到web服务时,日期和时间会更改/增加8小时。 这是我正在尝试的代码。请帮助我,让我明白什么时候出错,为什么出错。 所以在控制台中,defaultTimeZoneStr将是我的当前时间。但是在web服务中,它将延迟8小时。 请帮忙。 谢谢。zzz返回缩写的时区显示名称 你应该知道: 时区显示名称不唯
我应该在我的web服务中发布带有时区的当前日期和时间
当我尝试在控制台中打印时,我得到了正确的当前时间,但当使用Alamofire将数据推送到web服务时,日期和时间会更改/增加8小时。
这是我正在尝试的代码。请帮助我,让我明白什么时候出错,为什么出错。
所以在控制台中,defaultTimeZoneStr将是我的当前时间。但是在web服务中,它将延迟8小时。
请帮忙。
谢谢。
zzz
返回缩写的时区显示名称
你应该知道:
PST
可以代表太平洋标准时间(UTC-08)和菲律宾标准时间(UTC+08)简而言之,如果您需要标准格式,例如用于API调用,请不要使用
zzz
。使用Z
或X
变体之一。这是关于您的模拟器或电话时区的。它始终与UTC一起工作
在我看来,您总是使用UTC 0。您应该检查(1)时间字符串是否包含时区,(2)在服务器端也进行解析,(3)在数据库中输入正确的时间(4)使用时区从数据库读取正确的时间(5)使用本地时区打印时间您使用
“zzz”
->“GMT+1”
,但也有“Z”
对于“+0100”
可能在服务器端解析更好。要获得好的答案,您需要包括服务器端代码和一些db代码。我删除了zzz,保留了“yyy-MM-dd HH:MM:ss”。在web服务中发布的时间仍然错误。
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)")
}