2017-01-21 16 views
0

Я работаю с Alamofire 4.0 и Swift 3.0
Я предполагаю POST текущую дату и время с часовым поясом в своем веб-сервисе.
Когда я пытаюсь распечатать на консоли, я получаю правильное текущее время, но когда эти данные передаются в веб-службу с использованием Alamofire, дата и время меняются/увеличиваются на 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), если часовой пояс включен в timeString и (2) проанализирован также на серверах и (3) правильно установить в базе данных (4) правильно прочитать из базы данных с часовым поясом (5) распечатать время с помощью локального timezone – muescha

+0

вы используете '" zzz "' -> '' GMT + 1 "', но есть и '' Z "' для '' +0100 ", может быть, это лучше разбирается на серверах. – muescha

+0

Для получения хорошего ответа вам потребуется код на стороне сервера и некоторый код db – muescha

ответ

0

zzz возвращает сокращенный часовой пояс отображаемое имя.

Вы должны знать, что:

  1. Время отображения названия зоны не являются уникальными. Например, обычно используемый может выступать как для стандартного времени Тихого океана (UTC-08), так и для филиппинского стандартного времени (UTC + 08).

  2. Отображаемые зоны могут отличаться на разных языках. Вы не задали языковой стандарт для форматирования, поэтому имя может быть случайным.

Вкратце, не используйте zzz, если вам нужен стандартный формат, например. для вызовов API. Используйте один из вариантов Z или X.

+0

Я удалил zzz и сохранил «yyyy-MM-dd HH: mm: ss». Неправильное время опубликовано в веб-сервисе. – iCoder