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

熱點內容
網路中常用的傳輸介質 瀏覽:518
文件如何使用 瀏覽:322
同步推密碼找回 瀏覽:865
樂高怎麼才能用電腦編程序 瀏覽:65
本機qq文件為什麼找不到 瀏覽:264
安卓qq空間免升級 瀏覽:490
linux如何刪除模塊驅動程序 瀏覽:193
at89c51c程序 瀏覽:329
怎麼創建word大綱文件 瀏覽:622
裊裊朗誦文件生成器 瀏覽:626
1054件文件是多少gb 瀏覽:371
高州禁養區內能養豬多少頭的文件 瀏覽:927
win8ico文件 瀏覽:949
仁和數控怎麼編程 瀏覽:381
項目文件夾圖片 瀏覽:87
怎麼在東芝電視安裝app 瀏覽:954
plc顯示數字怎麼編程 瀏覽:439
如何辨別假網站 瀏覽:711
寬頻用別人的賬號密碼 瀏覽:556
新app如何佔有市場 瀏覽:42

友情鏈接