導航:首頁 > 編程語言 > 2016珠峰nodejs

2016珠峰nodejs

發布時間:2023-08-08 20:23:18

❶ Nodejs 修改 Linux 時間、時區

版本(0.12/5.3.0)
最近遇到了時區設置的問題
在Nodejs中,取當前時間(GMT格式)可以使用Date
var GMTDate = new Date();//Sun Mar 06 2016 20:42:44 GMT-0500 (GMT)1

但有時候server的時間要求是GreenWich時間,就是零時區
可以這樣設置
process.env.TZ = 'Europe/London';//可以切換到任意時區var date = new Date();
console.log(date);//Mon Mar 07 2016 01:44:04 GMT+0000 (GMT)1234

問題解決
寫文章的時候筆者還在使用0.12版本,經過測試,上面的代碼在v5.3.0中還可以正常發揮做用,但在6.9.4或者最新的7.6.0中都不能正常工作了。
在舊的版本中,列印一個date對象返回的是當前時區的時間,但在新版的Node中,直接返回的就算是世界時,也就是greenwich時間,相比東八區要早8個小時,格式也不再是GMT格式,這代表開發者就算要獲取當前時間都要做一下額外轉換。
var date = new Date();//2017-04-30T14:44:10.977Z 世界時間console.log(date);
//4/30/2017, 10:44:10 PM 轉換成本地時間console.log(date.toLocaleString());12345

稍微在網路上搜索一下,可以發現一個名為timezone的npm模塊,如果讀者有興趣可以自行探索該模塊的使用方法,在本節的內容里,筆者打算自己實現可用的模塊。
**
自己實現timezone的修改
**
經過試驗,雖然設置process.env.TZ的方法不能用了,但我們完全可以自己實現一套代碼出來。
為此,我們首先在Date對象的prototype上聲明一個map結構作為屬性,用於存儲時區名稱和偏移量的關系,然後對Date類的Date方法進行修改,如果沒有聲明process.env.TZ變數,就默認返回原來的date對象,如果聲明了該屬性,就先到對應的數組中進行搜索,然後返回修改後的date對象。
process.env.TZ = "America/New_York";Date.prototype.TimeZone = new Map([
['Europe/London',0],
['Asia/Shanghai',-8],
['America/New_York',5]
])Date.prototype.zoneDate = function(){
if(process.env.TZ == undefined){ return new Date();
}else{ for (let item of this.TimeZone.entries()) { if(item[0] == process.env.TZ){ let d = new Date();
d.setHours(d.getHours()+item[1]); return d;
}
} return new Date();
}
}var date = new Date().zoneDate();
console.log(date);

在上面的代碼里,如果聲明了process.env.TZ這一屬性,再調用zoneDate就能得到對應時區的date啦

閱讀全文

與2016珠峰nodejs相關的資料

熱點內容
exosshow哪個app好 瀏覽:691
clr資料庫程序集優點 瀏覽:919
手機編輯sql文件 瀏覽:355
裝了w8系統d盤文件沒了 瀏覽:509
殺毒軟體刪除的文件怎麼找回 瀏覽:853
novalct大屏配置文件 瀏覽:137
iphone磁吸數據線哪個好 瀏覽:279
終結者遠程式控制制軟體賬號密碼 瀏覽:53
chttp發送文件路徑 瀏覽:558
網站類論文功能設計模塊怎麼寫 瀏覽:933
斗魚伴侶看不到qq游戲 瀏覽:401
5s怎麼看運營商版本 瀏覽:410
導出選定網格到外部文件 瀏覽:508
vrmkv文件沒有聲音 瀏覽:447
惠普電腦u盤裝系統視頻教程 瀏覽:906
ufo文件查看 瀏覽:399
什麼市資料庫的安全性 瀏覽:335
fanucotd數控車床如何編程 瀏覽:62
蘋果開機時白屏黑蘋果 瀏覽:559
有什麼網站可以買國外的葯 瀏覽:832

友情鏈接