作者Gsus (肉元,吉米,助教)
看板MacDev
標題[問題] 有關NSDate以及UIDatePicker的配合
時間Mon Sep 27 02:50:40 2010
我在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