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

熱點內容
shell循環文件名 瀏覽:602
照片3d建模源代碼 瀏覽:434
西安iPhone6升級內存 瀏覽:84
小學生的編程的課是學什麼的 瀏覽:114
就業下載什麼app 瀏覽:191
個人配置文件重定向到D盤 瀏覽:22
js屏幕寬度 瀏覽:312
sql查找某列重復資料庫 瀏覽:48
智行火車票用微信支付 瀏覽:262
網路定價過程哪些內容發生變化 瀏覽:200
dubbo服務提供者的配置文件 瀏覽:182
win8系統如何壓縮文件 瀏覽:875
網站怎麼上傳代碼 瀏覽:4
java日誌的好處 瀏覽:103
武漢奇米網路怎麼樣 瀏覽:689
筆記本如何恢復原來數據 瀏覽:76
charles怎麼抓取js 瀏覽:580
網路智豹破解版 瀏覽:424
pdf文件一鍵轉藍 瀏覽:563
2014yy釣魚網站源碼 瀏覽:835

友情鏈接