導航:首頁 > 編程語言 > 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相關的資料

熱點內容
蘭博玩游戲路徑怎麼選擇正確文件 瀏覽:972
淘寶直通車恢復老版本 瀏覽:510
播放草莓的圖片我都文件 瀏覽:55
微信大文件打不開 瀏覽:767
家裝合同准備哪些文件 瀏覽:296
應用bat合並excel文件 瀏覽:984
迅雷影音文件夾 瀏覽:109
makefile的文件路徑 瀏覽:392
計算機程序文件名擴展名為 瀏覽:982
網路游戲推廣策劃案 瀏覽:609
替換所有文件內容的代碼 瀏覽:960
不是常用數據模型有哪些 瀏覽:426
aspcms版本號 瀏覽:835
安卓怎麼用數據流量下載軟體 瀏覽:553
大眾手動空調數據流通道號是多少 瀏覽:303
手機qq令牌 瀏覽:737
cg原畫上色教程 瀏覽:993
婚介服務中心app怎麼做 瀏覽:43
日本蘋果66g多少錢 瀏覽:93
個性的文件夾名稱 瀏覽:697

友情鏈接