[問題] 有關NSDate以及UIDatePicker的配合

看板MacDev作者 (肉元,吉米,助教)時間15年前 (2010/09/27 02:50), 編輯推噓0(0012)
留言12則, 2人參與, 最新討論串1/1
我在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

09/27 08:51, , 1F
原來只要讓datePicker.timeZone = [NSTimeZone timeZoneWith
09/27 08:51, 1F

09/27 08:51, , 2F
WithName:@"GMT"];就解決了XDD
09/27 08:51, 2F

09/27 16:14, , 3F
老實說我覺得你的作法實在不好
09/27 16:14, 3F

09/27 16:15, , 4F
從 server 回傳的時間沒有 timezone,就是錯誤的第一步
09/27 16:15, 4F

09/27 16:16, , 5F
再來,如果要修正時區差異,應該是要確認 NSDate 物件裡頭
09/27 16:16, 5F

09/27 16:17, , 6F
本身的時區,NSDateFormatter 本身就有 timezone 可以設
09/27 16:17, 6F

09/27 16:17, , 7F
根據時區調整字串轉出的 nsdate 物件
09/27 16:17, 7F

09/27 16:17, , 8F
你這樣只改 datepicker,就只是改了某個顯示的地方,但是
09/27 16:17, 8F

09/27 16:18, , 9F
日期資料本身的時區還是有問題
09/27 16:18, 9F

09/27 16:18, , 10F
資料有問題卻只改顯示的地方,那以後在別的地方要顯示這個
09/27 16:18, 10F

09/27 16:18, , 11F
日期,都要這樣搞一次,這樣最後會變成無法維護
09/27 16:18, 11F

09/27 16:33, , 12F
多謝指正~! 可是server端的部份不再我的控制範圍內QQ
09/27 16:33, 12F
文章代碼(AID): #1CdvO2JJ (MacDev)
文章代碼(AID): #1CdvO2JJ (MacDev)