--- 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'); //在這裡指定格式 ```