[问题] 时区的时间转换

楼主: heavenbetula (绿草)   2014-02-21 21:38:07
先附上书上截取的一小段程式:
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()
在改变?
作者: KawasumiMai (さあ、死ぬがいい)   2014-02-22 18:51:00
没写过类似的东西,不过帮你测试了一下于台湾时间18点,将时区改成东京,也就是显示19点trace的结果GMT=8 估计他会依照网络位置取得正确时区(台湾的+8)getHours = 19 也就是设定的东京时间watch.getHours()+GMT = 27setHours(watch.getHours()) = 1393095346408setHours(watch.getHours()+ GMT) = 1393124146408所以并没有如文中说的一样,可能你是用台湾时区去测另外watch.setHours(watch.getHours()+ GMT)之后watch.getUTCHours() 就显示18点,在这之前会是10点估计是格林威治那边的标准时间,所以问题还是在GMT如果使用内定函数会取得国际标准时间跟设定的时区时间但是GMT看似会依照位置显示所在地正确时区所以以GMT为标准(setHour)之后则可用函数取得正确时间
楼主: heavenbetula (绿草)   2014-02-22 19:37:00
感谢K大!

Links booklink

Contact Us: admin [ a t ] ucptt.com