2017-01-21 11 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

timezone이 timeString에 포함되어 있는지, (2) 서버 측에서도 파싱되어 있는지, (3) 데이터베이스에 올바른지 (4) 올바른지, 시간대가있는 데이터베이스에서 읽었는지 (5) 확인해야합니다. timezone – muescha

+0

당신은''zzz ''->' "GMT + 1"'을 사용하지만'+0100 "''Z"'도 있습니다. – 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