精華區beta MacDev 關於我們 聯絡資訊
我在Server端有一個birthday字串 例如:2010-09-27 16:00 然後我在client抓回birthday字串後,先用NSDateFormatter轉成NSDate (ivar是birthdate) 我有一個UIDatePicker *datePicker; 我發現我要在[datePicker setDate:birhdate]時,datePicker會根據我在的區域 display時會幫我加上offset,例如我在台北, datePicker.date會是 2010-09-27 16:00 沒錯 但是datePicker在螢幕上顯示的卻是2010-09-28 00:00 也就是因為台北是GMT+08:00,所以我的datePicker顯示會幫我加8小時 (即使datePicker.date仍然是2010-09-27 16:00) 想請問這種狀況我該如何解決呢 我是要自己手動找出offset 先把birthdate減去8小時,再設datePicker.date = birthdate; 然後之後有要用到datePicker.date時再把它加回8小時嗎? 有沒有其他比較好的方法呀.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.147.102
Gsus:原來只要讓datePicker.timeZone = [NSTimeZone timeZoneWith 09/27 08:51
Gsus: WithName:@"GMT"];就解決了XDD 09/27 08:51
zonble:老實說我覺得你的作法實在不好 09/27 16:14
zonble:從 server 回傳的時間沒有 timezone,就是錯誤的第一步 09/27 16:15
zonble:再來,如果要修正時區差異,應該是要確認 NSDate 物件裡頭 09/27 16:16
zonble:本身的時區,NSDateFormatter 本身就有 timezone 可以設 09/27 16:17
zonble:根據時區調整字串轉出的 nsdate 物件 09/27 16:17
zonble:你這樣只改 datepicker,就只是改了某個顯示的地方,但是 09/27 16:17
zonble:日期資料本身的時區還是有問題 09/27 16:18
zonble:資料有問題卻只改顯示的地方,那以後在別的地方要顯示這個 09/27 16:18
zonble:日期,都要這樣搞一次,這樣最後會變成無法維護 09/27 16:18
Gsus:多謝指正~! 可是server端的部份不再我的控制範圍內QQ 09/27 16:33