发送到Web服务的日期错误

时间:2017-01-21 07:55:41

标签: swift swift3 nsstring nsdate nsdateformatter

我正在使用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小时 请帮忙。
谢谢。

2 个答案:

答案 0 :(得分:1)

zzz返回缩写的时区显示名称。

你应该知道:

  1. 时区显示名称不是唯一的。例如,常用的PST可以代表太平洋标准时间(UTC-08)和菲律宾标准时间(UTC + 08)。

  2. 时区显示名称可以在不同语言中有所不同。您尚未为格式化程序设置区域设置,因此名称可以是随机的。

  3. 简而言之,如果您需要标准格式,请不要使用zzz,例如用于API调用。使用其中一个ZX变体。

答案 1 :(得分:0)

这是关于你的模拟器或手机时区。它始终与UTC一起使用。

在我看来,你总是使用UTC 0。