new Date().toLocaleString() 產生類似 "2015/6/3 下午3:47:30" 的字符串,需轉為 "2015-06-03 下午3:47:30"(月日兩位數)。
function formatDate(date = new Date()) {
const y = date.getFullYear();
const m = String(date.getMonth() + 1).padStart(2, '0');
const d = String(date.getDate()).padStart(2, '0');
const h = String(date.getHours()).padStart(2, '0');
const min = String(date.getMinutes()).padStart(2, '0');
const s = String(date.getSeconds()).padStart(2, '0');
return `${y}-${m}-${d} ${h}:${min}:${s}`;
}
Date.prototype.toCustomString = function() {
const y = this.getFullYear();
const m = String(this.getMonth() + 1).padStart(2, '0');
const d = String(this.getDate()).padStart(2, '0');
return `${y}-${m}-${d} ${this.toLocaleTimeString()}`;
};
const str = new Date().toCustomString();
const fmt = new Intl.DateTimeFormat('zh-CN', {
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit',
hour12: false
});
fmt.format(new Date()).replace(/\//g, '-'); // "2015-06-03 15:47:30"
toLocaleString() 受系統語言影響,不同環境格式不一致,不可用於機器解析。getMonth() 返回 0-11,需 +1。padStart(2,'0') 需 ES2017,舊環境可用 ('0'+n).slice(-2)。