首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 日期格式化:將斜杠替換為連字符並零填充月日

     編輯:程式設計綜合問答

需求

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(僅教學用,污染原型慎用)

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();

方案三:使用 Intl.DateTimeFormat(現代標準)

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)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved