---
tags: Javascript,
disqus: hackmd
---
# [JS]Date轉換時間格式
參考資料
[Javascript 轉換時區.toISOString() 相差問題](https://www.ucamc.com/e-learning/javascript/343-javascript-%E8%BD%89%E6%8F%9B%E6%99%82%E5%8D%80-toisostring-%E7%9B%B8%E5%B7%AE%E5%95%8F%E9%A1%8C)
[Javascript Date 的健忘筆記](https://blog.scottchayaa.com/post/2019/05/27/javascript_date_memo/)
我的相關文章
[[JS]將指定日期加上 X 天](https://hackmd.io/9q8W6RhTSbuSfAyFhqYAOw?view)
---
```javascript=
//解决方式
const date = new Date(+new Date() + 8 * 3600 * 1000); //加入相差的8小時
const currentMonth = date.toISOString().substr(0, 10);
```
如果需要指定格式,可以使用下面這個方法。
```javascript=
// 對Date的擴充套件,將 Date 轉化為指定格式的String
// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個佔位符,
// 年(y)可以用 1-4 個佔位符,毫秒(S)只能用 1 個佔位符(是 1-3 位的數字)
// 例子:
// (new Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
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;
}
```
如果不想對Date做擴充,也可以把擴充的內容搬出來到自定義的函式使用。
```javascript=
handleGetTime(fmt) {
const date = new Date();
const o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"h+": date.getHours(), //小時
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.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;
}
handleGetTime('yyyy-MM-dd hh:mm:ss'); //在這裡指定格式
```