JavaScript - 取得某時區日期時間
最近在玩Node.js+MongoDB
當要建立現在時間,將javascript的Date寫入MongoDB時,
發現,為什麼都是美國時間呢?應該是Linux上的機器是以UTC為主,
但我需要自建時間到MongoDB裡,且要符合YYYY-MM-dd hh:mm:ss的格式,
查了網路資料,從兩篇文章得到解法,並整合到我的node.js程式裡,
以下是兩個網路解法的程式碼
自己做某TimeZone的時間,以台灣的話,就是+8小時去取得
https://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/
取得YYYY-MM-dd hh:mms:ss格式的解法
http://www.weizhixi.com/user/index/article/id/6.html
合併起來就如下
Date.prototype.Format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
function getNow(){
var d = new Date();
utc = d.getTime() + d.getTimezoneOffset()*60*1000;
var offset = 8;
nd = new Date(utc+(3600000*offset));
var currentTime = nd.Format("yyyy-MM-dd hh:mm:ss");
return currentTime;
}