作者heavenbetula (綠草)
看板Flash
標題[問題] 時區的時間轉換
時間Fri Feb 21 21:38:07 2014
先附上書上截取的一小段程式:
setInterval(worldTime,1000);//每1秒鐘執行worldTime自訂函數1次
function worldTime(){
//使用zoneTime()自訂函數,傳遞參數台灣GMT時差+8,取得台灣目前時間
var hms = zoneTime(8);
//畫面上的taipei_txt文字欄位顯示時間
taipei_txt.text = hms[0] + ":" + hms[1]+ ":" + hms[2];
}
function zoneTime(GMT){
var watch= new Date();
//利用本地端小時數,及傳遞的GMT參數作不同時區加時,作為時間物件新的小時數資料
watch.setHours(watch.getHours()+ GMT);
//將時間物件取得的國際標準時間時、分、秒儲存在陣列中
var hms:Array = [watch.getUTCHours(),watch.getUTCMinutes(),watch.getUTCSeconds()];
return hms;
}
請問各位大大,watch.setHours(watch.getHours()+GMT);此行為何要將小時轉為毫秒
且我用trace查看setHours(watch.getHours()+ GMT),與setHours(watch.getHours()
發現值根本一樣啊...這樣GMT不就白加?
還有,國際標準時間應該是固定在跑的,為何hms陣列的內容,還會隨著watch.setHours()
在改變?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.28.56
1F:→ KawasumiMai:沒寫過類似的東西,不過幫你測試了一下 02/22 18:51
2F:→ KawasumiMai:於台灣時間18點,將時區改成東京,也就是顯示19點 02/22 18:52
3F:→ KawasumiMai:trace的結果 02/22 18:52
4F:→ KawasumiMai:GMT=8 估計他會依照網路位置取得正確時區(台灣的+8) 02/22 18:53
5F:→ KawasumiMai:getHours = 19 也就是設定的東京時間 02/22 18:53
6F:→ KawasumiMai:watch.getHours()+GMT = 27 02/22 18:54
7F:→ KawasumiMai:setHours(watch.getHours()) = 1393095346408 02/22 18:56
8F:→ KawasumiMai:setHours(watch.getHours()+ GMT) = 1393124146408 02/22 18:56
9F:→ KawasumiMai:所以並沒有如文中說的一樣,可能你是用台灣時區去測 02/22 18:57
10F:→ KawasumiMai:另外watch.setHours(watch.getHours()+ GMT)之後 02/22 18:58
11F:→ KawasumiMai:watch.getUTCHours() 就顯示18點,在這之前會是10點 02/22 18:58
12F:→ KawasumiMai:估計是格林威治那邊的標準時間,所以問題還是在GMT 02/22 18:59
13F:→ KawasumiMai:如果使用內定函數會取得國際標準時間跟設定的時區時間 02/22 19:00
14F:→ KawasumiMai:但是GMT看似會依照位置顯示所在地正確時區 02/22 19:00
15F:→ KawasumiMai:所以以GMT為標準(setHour)之後則可用函數取得正確時間 02/22 19:01
16F:→ heavenbetula:感謝K大! 02/22 19:37