Date
不按照您認爲的方式工作。它可以以兩種格式之一存在:本地時間或UTC。
getHours()
方法返回本地時間,或根據計算機的內部時區偏移格式化的UTC時間。你通過的時間實際上是UTC的上午7點。所以通過這個邏輯,你(和我)在PST(或UTC-7)中。如果您運行d.timezoneOffset
,則應返回420
,即以分鐘爲單位的7小時。
現在,大多數時間你都不想從來沒有想與除UTC以外的任何東西(UTC是一個常數,特別是在電腦中)。因此,忘記getHours()
方法,而是看看getUTCHours()
。
trace(d.getTime() + " : " + d.getUTCHours()); // output 1382166000000 : 7
因此,這會給你在UTC時間的時間。接下來,您必須確定要將其格式化爲的時區。 EST是UTC-5,所以你想從UTC時間減去5。
trace(d.getTime() + " : " + (d.getUTCHours() - 5)); // output 1382166000000 : 2
這就給你準確的你所期待的。
只是爲了重申:AS3的Date
類不允許允許設置時區。您只能訪問UTC和本地時區中的時間。而已。如果您想在任何其他時區使用時間,則需要手動進行格式化,如上所述。
您確定?我似乎越來越1382166000000:2. – Fygo
是的,我從我的As3文檔複製和粘貼的代碼。也許它可能與我的機器的時間設置有關? (另外我爲AIR 3.4導出,如果這可能會影響事情嗎?) – rcooper102
是的,它受本地計算機時區設置的影響。但是,如果設置正確,它應該代表每個時區的同一時間。 (至少據我所知,至少) – Fygo