🤝 免罵聲明:
- 本文
常用時間類型格式化操作經本蜀黎實戰整理,旨在提供快速參考指南📝- 因各語言版本迭代及不同系統
環境差異,偶爾可能出現整理不全面之處,實屬正常✅- 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
- 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
🔥【特別説明·時間篇章啓航】🔥
- 各位兄弟姐妹請注意!本篇為《時間格式化·基礎速通篇》🥉
⏳為何先學本篇?
- 覆蓋日常開發中 90% 的
時間格式化場景🏆 - 解決
財務、審計、報表等業務的即時需求🥇 - 避免
老闆電療的「急救術」,先活下來再追求完美🥈
📚後續深度篇章預告
- 《時間函數·時區戰鬥篇》—— 跨時區系統如何避免「時間幽靈」🔎
- 《時間函數·源碼解析篇》—— 各語言時間庫的設計哲學與底層原理🎨
💡學習建議
- 本篇先掌握
基礎生存技能✅ - 實戰中遇到問題時再來查閲🚀
- 後續
深度篇章將系統講解時間處理的「道」與「術」🎰
🎯記住虎山CTO的這句話
「👊先解決有沒有,再解決好不好——格式化如用藥,急則治其標,緩則治其本!」
📚 系列文章預告:
- 近期內容將聚焦編程基礎構建,以
「原創知識矩陣」形式系統梳理核心概念。每篇如連續劇集般環環相扣,建議按順序學習——知識點一鍋端,療效更持久!🔥
🧾【場景還原·小南的時間格式化危機】
📉 小南(抓狂地揮舞審計報告):
- 鳴人!憑證
時間格式混亂——有的2025/9/18,有的18-SEP-25,還有的1737216000時間戳! - 雷影老闆要求:24小時內統一成『YYYY-MM-DD HH:MM:SS 週四』格式,否則全員手寫
全年憑證台賬!📆💥
🦊 鳴人(結印搓出影分身):
- 師姐別慌!我這就用
strftime()結印——等等...Go和Java怎麼用來着?!」 - (影分身砰砰消失)「卡卡西老師!雛田!救命啊——😵
👁️ 卡卡西(雷切劈開亂碼):
- 「嘖,又是
時間格式化。日期如雷切劈開混沌,時間像寫輪眼解析結構——雛田,用白眼看看時間本質!」👀
🌸 雛田(柔拳點穴式修復):
🍜鳴人...請、請這樣用:
- Python用
strftime,Java用DateTimeFormatter,Go用Format("2006-01-02"),JS用Intl.DateTimeFormat...🎨 - 還、還有
星期轉換要像點穴般精準...🎯
⚡ 雷影老闆(電光炸裂):
- 「🌀三小時內不統一格式——你們就去給雲隱村寫一輩子
時間格式化腳本!」
🧘【扎馬步·時間格式化心法】
%Y-%m-%d %H:%M:%S %a→ 標準財務格式(審計強迫症福音)📅{0:%Y}年{0:%m}月{0:%d}日 → 中文日期(領導專屬閲讀版)📜padStart(2, '0')→ 補零術(防止月份出現9而不是09)🔢getDay()映射星期 → 數字轉中文(防止輸出3而不是週三)🗓️Locale.CHINESE→ 本地化護體(防德式日期反向輸出)🌍
🧪【四語言實機結印·時間格式化對比】
1. Python(寫輪眼·一念格式化)
now = datetime.datetime.now()
print("{:%Y-%m-%d %H:%M:%S %a}".format(now)) # 2025-09-18 14:30:45 Thu
print("{0:%Y}年{0:%m}月{0:%d}日".format(now)) # 2025年09月18日
2. Java(柔拳·精準點穴)
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss E", Locale.CHINESE);
System.out.println(now.format(formatter)); // 2025-09-18 14:30:45 週四
3. Go(雷切·暴力格式化)
now := time.Now()
fmt.Println(now.Format("2006-01-02 15:04:05 Mon")) // 2025-09-18 14:30:45 Thu
4. JS(白眼·動態拼接)
const now = new Date();
console.log(now.toLocaleString('zh-CN', {
year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit',
weekday: 'short'
}).replace(/年|月|日|,/g, '-')); // 2025-09-18 14:30:45 週四
📊【四語言時間格式化戰力對比表】
| 語言 | 核心函數 | 星期處理 | 本地化支持 | 實戰指數 |
|---|---|---|---|---|
| Python | strftime/format |
%a→英文 %w→數字 |
Locale需額外配置 | ⭐⭐⭐⭐ |
| Java | DateTimeFormatter |
E→中文 |
Locale.CHINESE |
⭐⭐⭐⭐⭐ |
| Go | Format("2006-01-02") |
Mon→英文 |
需手動映射 | ⭐⭐⭐ |
| JS | Intl.DateTimeFormat |
weekday: 'short' |
原生支持多語言 | ⭐⭐⭐⭐ |
關鍵對比:
Python:
- 使用
%a顯示英文縮寫星期(如Mon),%w返回數字(0-6)🎰- 本地化需額外配置
locale模塊,非開箱即用😱Java:
E模式符號直接支持中文星期(如"週一")🥇- 通過
Locale.CHINESE輕鬆實現本地化🥈- 實戰最佳:格式化API設計最完善🏆
Go:
- 必須硬編碼
2006-01-02這樣的參考時間模板📌- 星期顯示為英文縮寫(如Mon),本地化需自行映射💎
JS:
- 通過
weekday: 'short'配置星期顯示格式🍱- 原生支持多語言,但Node.js環境依賴ICU數據完整性🌈
實戰建議:
- 國際化項目首選 Java🥇
- 快速開發用 Python/JS🥈
- Go需自行封裝本地化邏輯🥉
🌈格式化能力解析:
- 日期標準化:Java的
DateTimeFormatter最強大(原生中文星期)🏆 - 靈活性:Python的
format語法最簡潔🥈 - 本地化:JS的
IntlAPI瀏覽器環境無敵🥇 - 底層控制:Go需記住
神秘數字2006-01-02🥉
⚠️【避坑提示·時間格式化界的“十八反”】
🚫 Go的格式化必須用2006-01-02 → 用其他日期直接報錯!
// 錯誤示範(爆雷!)
fmt.Println(now.Format("2025-09-18")) // 輸出亂碼
// 正確示範
fmt.Println(now.Format("2006-01-02")) // 輸出2025-09-18
💥 Java的Locale依賴系統設置 → 德區服務器輸出Mittwoch(星期三)!
// 危險做法
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E"); // 德區輸出"Mittwoch"
// 安全做法
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("E", Locale.CHINESE); // 永遠輸出"週三"
🚫 JS的getDay()返回0-6 → 0是週日,不是週一!
// 錯誤映射(爆雷!)
const days = ["週一", "週二", "週三", "週四", "週五", "週六", "週日"]; // 週日應該在第0位!
// 正確映射
const days = ["週日", "週一", "週二", "週三", "週四", "週五", "週六"];
console.log(days[new Date().getDay()]); // 週三
💥 Python的%w星期數字0是週日 → 與JS一致但易混淆!
week = ["週日", "週一", "週二", "週三", "週四", "週五", "週六"]
print(week[int("{:%w}".format(now))]) # 週三
🧪【實戰融合術·四語言時間格式化】
Python(財務標準格式)
print("{:%Y-%m-%d %H:%M:%S %a}".format(now)) # 2025-09-18 14:30:45 Thu
Java(領導中文版)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒 E", Locale.CHINESE);
System.out.println(now.format(formatter)); // 2025年09月18日 14時30分45秒 週四
Go(日誌瘦身格式)
fmt.Println(now.Format("2006-01-02 15:04:05")) // 2025-09-18 14:30:45
JS(國際化輸出)
console.log(new Intl.DateTimeFormat('en-US', {
dateStyle: 'full',
timeStyle: 'long'
}).format(now)); // Thursday, September 18, 2025 at 2:30:45 PM GMT+8
以下是本蜀黎整理源碼和截圖⏬
1.Python源碼⏬
import datetime
# ==================== 財務時間模塊 ====================
# 標準賬務日期格式 # 讓時間穿上會計制服 📅
# 年月日中文分隔 # 賬本專用文人曆法 📜
# 時分秒精確切割 # 審計員的原子鐘 ⏱️
# 年月日尖括號款 # 電子憑證防偽標記 🔐
# 精簡版時間戳 # 流水線作業計時器 🏭
# 星期簡寫模式 # 財務部的週報觸發器 📆
# 月份英文縮寫 # 涉外報表的紳士風度 🎩
# ⚠️ERP_冷溪虎山:時間格式錯誤會引發税務稽查
now = datetime.datetime.now()
print(now)
print("{:%Y-%m-%d %H:%M:%S %a}".format(now))
print("{0:%Y} 年 {0:%m} 月 {0:%d} 日".format(now))
print("{0:%H} 時 {0:%M} 分 {0:%S} 秒".format(now))
print("{:%Y<%m>%d}".format(now))
print("{:%H:%M:%S}".format(now))
print("{:%a}".format(now))
print("{:%b}".format(now))
# 野生奧義:%w取星期數字(0=週日),用列表映射為中文
print("\n🍒🍒🍒🍒🍒🍒🍒🍒🍒以下是week")
week = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
print(week[int("{:%w}".format(now))])
print("{:%c}".format(now))
2.Nodejs源碼⏬
// ==================== 中藥時間模塊 ====================
// 標準煉丹日期格式 // 仙家曆法記錄儀 🧙
// 年月日干支變體 // 老黃曆配伍指導 📜
// 時辰分鐘精確版 // 子午流注計時器 ⏳
// 特殊符號分隔款 // 丹方加密時間鎖 🔮
// 精簡版時辰顯示 // 藥童速記模式 📝
// 星期簡寫模式 // 五行養生日程表 ☯️
// 月份本草簡稱 // 藥材採收月曆 🌿
// ⚠️虎山老藥師:時辰錯亂會煉出毒丹
const now = new Date();
// 1. 直接打印(類似 Python 的 now)
console.log(now.toString());
// 2. 格式化:YYYY-MM-DD HH:MM:SS Day
const options1 = {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
weekday: 'short',
hour12: false
};
const formatted1 = new Intl.DateTimeFormat('zh-CN', options1).format(now)
.replace(/年|月|日|,|\s/g, match => {
if (match === '周') return '星期';
return match === ',' ? '-' : match;
})
.replace(/上午|下午/, '')
.padStart(19, '0'); // 補全格式
console.log(formatted1.replace(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) (..)/, `$1-$2-$3 $4:$5:$6 $7`));
// 3. 格式化:YYYY 年 MM 月 DD 日
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
console.log(`${year} 年 ${month} 月 ${day} 日`);
// 4. 格式化:HH 時 MM 分 SS 秒
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
console.log(`${hours} 時 ${minutes} 分 ${seconds} 秒`);
// 5. 格式化:YYYY<MM>DD
console.log(`${year}<${month}>${day}`);
// 6. 格式化:HH:MM:SS
console.log(`${hours}:${minutes}:${seconds}`);
// 7. 格式化:Day (縮寫)
const weekdays = ['日', '一', '二', '三', '四', '五', '六'];
const weekday = weekdays[now.getDay()];
console.log(`星期${weekday}`);
// 8. 格式化:Month (縮寫)
const months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];
console.log(months[now.getMonth()]);
console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒🍒以下是week");
const week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
console.log(week[now.getDay()]);
// 9. 格式化:locale date & time (類似 %c)
console.log(now.toLocaleString('zh-CN'));
3.Go源碼⏬
package main
import (
"fmt"
"time"
)
// ==================== 倉儲時間模塊 ====================
// 標準入庫日期格式 // 物流界的ISO認證 🏷️
// 年月日中文分隔 // 叉車司機識字版 📦
// 時分秒精確記錄 // 智能倉庫原子鐘 ⚡
// 特殊符號分隔款 // 貨架定位密碼鎖 🔑
// 精簡版時間戳 // 快遞面單專用款 🚛
// 星期簡寫模式 // 倉庫貓值班表 🐱
// 月份英文縮寫 // 跨境物流通行證 🌐
// ⚠️冷溪物流:時間錯亂會導致貨物穿越
func main() {
now := time.Now()
// 1. 直接打印(類似 Python 的 now)
fmt.Println(now)
// 2. 格式化:YYYY-MM-DD HH:MM:SS Day
fmt.Printf("%s\n", now.Format("2006-01-02 15:04:05 Mon"))
// 3. 格式化:YYYY 年 MM 月 DD 日
fmt.Printf("%d 年 %02d 月 %02d 日\n", now.Year(), now.Month(), now.Day())
// 4. 格式化:HH 時 MM 分 SS 秒
fmt.Printf("%02d 時 %02d 分 %02d 秒\n", now.Hour(), now.Minute(), now.Second())
// 5. 格式化:YYYY<MM>DD
fmt.Printf("%d<%02d>%02d\n", now.Year(), now.Month(), now.Day())
// 6. 格式化:HH:MM:SS
fmt.Printf("%02d:%02d:%02d\n", now.Hour(), now.Minute(), now.Second())
// 7. 格式化:Day (縮寫)
fmt.Printf("%s\n", now.Format("Mon"))
// 8. 格式化:Month (縮寫)
fmt.Printf("%s\n", now.Format("Jan"))
fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒🍒以下是week")
week := []string{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}
fmt.Println(week[now.Weekday()])
// 9. 格式化:locale date & time (類似 %c)
fmt.Println(now.Format(time.RFC1123))
}
4.Java源碼⏬
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
// ==================== ERP時間模塊 ====================
// 標準業務日期格式 // 數字世界的格林威治 ⏰
// 年月日中文分隔 // 領導專屬閲讀版 👔
// 時分秒精確切割 // 高併發事務計時器 💻
// 特殊符號分隔款 // 系統間加密時間鎖 🔗
// 精簡版時間戳 // 日誌文件瘦身款 📄
// 星期簡寫模式 // 運維值班日曆 📅
// 月份英文縮寫 // 跨國分公司同步器 🌍
// ⚠️ERP老兵_冷溪虎山:時間不同步會引發數據蟲洞
class main18 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
// 1. 直接打印(類似 Python 的 now)
System.out.println(now);
// 2. 格式化:YYYY-MM-DD HH:MM:SS Day
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss E", Locale.CHINESE);
System.out.println(now.format(formatter1));
// 3. 格式化:YYYY 年 MM 月 DD 日
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy 年 MM 月 dd 日");
System.out.println(now.format(formatter2));
// 4. 格式化:HH 時 MM 分 SS 秒
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH 時 mm 分 ss 秒");
System.out.println(now.format(formatter3));
// 5. 格式化:YYYY<MM>DD
DateTimeFormatter formatter4 = DateTimeFormatter.ofPattern("yyyy<MM>dd");
System.out.println(now.format(formatter4));
// 6. 格式化:HH:MM:SS
DateTimeFormatter formatter5 = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(now.format(formatter5));
// 7. 格式化:Day (縮寫)
DateTimeFormatter formatter6 = DateTimeFormatter.ofPattern("E", Locale.CHINESE);
System.out.println(now.format(formatter6));
// 8. 格式化:Month (縮寫)
DateTimeFormatter formatter7 = DateTimeFormatter.ofPattern("MMM", Locale.CHINESE);
System.out.println(now.format(formatter7).replace(".", "")); // 去掉點
System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒🍒以下是week");
String[] week = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
System.out.println(week[now.getDayOfWeek().getValue() - 1]); // 1=Monday, 7=Sunday
// 9. 格式化:locale date & time (類似 %c)
DateTimeFormatter formatter9 = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss yyyy", Locale.CHINESE);
System.out.println(now.format(formatter9));
}
}
源碼分享結束⏫
📜【結局:時間統一·老闆驚歎】
⚡ 雷影老闆(看着整齊的憑證時間軸目瞪口呆):
- 🚀這
時間格式...比我的雷遁還精準! - 🍜年終獎加十噸《時間格式化忍法帖】+
一樂拉麪終身VIP!
🌸 小南(憑證時間軸化作千紙鶴飛散):
- 「🍜鳴人!下次用
Locale.CHINESE給所有日期加『中文變身』——讓審計署再也挑不出刺!」
🦊 鳴人(啃着拉麪嘟囔):
- 「🙏其實...時間格式化就像煉丹——火候多了糊,少了生,剛剛好才是真忍術!」
🧾【虎山CTO的終極總結】
- 時間格式化 →
子午流注,準時準點(系統生物鐘)⏰ - 本地化 → 因地制宜,入鄉隨俗(跨國報表無憂)🌏
- 星期映射 → 經脈轉換,氣血互通(防數字轉義崩潰)🔄
**編程如用藥,切忌胡亂君臣——💊
該用Locale時用點穴(Locale.CHINESE),該補零時用仙術(padStart)**
⚠️ 免責聲明(附因果律警告)
本代碼已注入中醫玄學能量,請謹慎使用:
-
✅ 允許白嫖,但白嫖不點贊可能導致:
- 下次面試官恰好問到這個算法
- 鍵盤自動打出
//這裏感謝冷溪虎山CTO - 奶茶精準灑在剛寫好的代碼上
-
✅ 允許商用轉發,但商用不註明出處可能觸發:
- 系統類型混亂自動轉型
- 數據庫莫名存儲"君臣佐使"字段
-
✅ 允許吐槽,但吐槽不帶改進建議可能引發:
- 終生與老闆N連鞭相愛相殺
🚀 現在立即行動:
- 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
- 收藏 → 避免日後求醫無門
- 關注 → 接收更多「中醫+代碼」腦洞
- 評論區留言 → 領取你的專屬「算法藥方」
⚠️ 友情提示:
- 本文內容過於硬核,建議點贊收藏轉發三連,避免小編
心情波動導致文章神秘消失! - 畢竟小編今天可能愛答不理,明天可能高攀不起——
-
但你的收藏夾,永遠是你最穩的知識備份!
🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步GitHub/公眾號/網盤!)
📖Python/JS/Go/Java四語言同步學習,跨語言系列上線(別在糾結學什麼單語言了)
🔍 沒看過前傳?快補課!
前1-10篇請移步至"PY-JS-GO-JAVA基礎進階學習系列"合集中閲讀
- Python/JS/Go/Java同步學習(第十七篇)四語言“字符串格式化(下)“對照表: 財務“小南“紙式格式化術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十六篇)四語言“字符串格式化(上)“對照表: 財務“小南“紙式格式化術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十五篇)四語言“字符串去重“對照表: 財務“小南“紙式去重術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十四篇)四語言“字符串字母大小寫轉換“對照表: 財務“小南“紙式轉換術處理憑證內容崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十三篇)四語言“字符串轉碼解碼“對照表: 財務“小南“紙式轉碼術處理憑證亂碼崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十二篇)四語言“字符串填充編號“對照表: 財務“小南“紙式填充術加憑證編號崩潰(附源碼/截圖/參數表/避坑指南)
- Python/JS/Go/Java同步學習(第十一篇)四語言“字符串替換與填充“對照表: 雷影老闆下達清除“數據歪臉“指令(附源碼/截圖/參數表/避坑指南)