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

熱點內容
2017互聯網java面試題 瀏覽:907
供求網站源碼 瀏覽:195
童程童美編程加盟怎麼樣 瀏覽:895
app美團如何下載 瀏覽:197
弄畫框用什麼app 瀏覽:814
java獲取網頁圖片 瀏覽:193
jsp集合對象轉json 瀏覽:231
文件櫃在cad裡面長啥樣 瀏覽:554
iphone手機文件保存在哪裡 瀏覽:817
解壓文件後要刷新 瀏覽:786
cc資料庫怎麼獲得時間 瀏覽:226
ug3d硬料開出怎麼編程 瀏覽:151
如何獲取文件Linux命令 瀏覽:981
大智慧軟體哪個版本最好 瀏覽:698
狼人殺自動主持app叫什麼 瀏覽:949
checkbox怎麼綁定資料庫 瀏覽:945
編程怎麼設置一分鍾開燈 瀏覽:754
如何把桌面文件發送到自己郵箱 瀏覽:498
校園網站怎麼看選修的課 瀏覽:59
大數據專業哪個最好 瀏覽:467

友情鏈接