動態

詳情 返回 返回

Python/JS/Go/Java同步學習(第十八篇)四語言“常用時間類型格式化“對照表

🤝 免罵聲明:
  • 本文常用時間類型格式化操作經本蜀黎實戰整理,旨在提供快速參考指南📝
  • 因各語言版本迭代及不同系統環境差異,偶爾可能出現整理不全面之處,實屬正常✅
  • 歡迎理性交流補充,噴子勿噴——畢竟你行你上來寫,我敬你是條漢子,告訴我的你原文鏈接,我給你一鍵三連+轉發👍!
  • 若遇具體問題,請帶圖評論區留言,本蜀黎必拔碼相助🤝
    在這裏插入圖片描述
🔥【特別説明·時間篇章啓航】🔥
  • 各位兄弟姐妹請注意!本篇為《時間格式化·基礎速通篇》🥉
⏳為何先學本篇?
  • 覆蓋日常開發中 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' 原生支持多語言 ⭐⭐⭐⭐

關鍵對比

  1. Python

    • 使用%a顯示英文縮寫星期(如Mon),%w返回數字(0-6)🎰
    • 本地化需額外配置locale模塊,非開箱即用😱
  2. Java

    • E模式符號直接支持中文星期(如"週一")🥇
    • 通過Locale.CHINESE輕鬆實現本地化🥈
    • 實戰最佳:格式化API設計最完善🏆
  3. Go

    • 必須硬編碼2006-01-02這樣的參考時間模板📌
    • 星期顯示為英文縮寫(如Mon),本地化需自行映射💎
  4. 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))
 

Python

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

nodejs

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))
}

go

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

Java

源碼分享結束⏫

📜【結局:時間統一·老闆驚歎】

⚡ 雷影老闆(看着整齊的憑證時間軸目瞪口呆):
  • 🚀這時間格式...比我的雷遁還精準!
  • 🍜年終獎加十噸《時間格式化忍法帖】+一樂拉麪終身VIP!
🌸 小南(憑證時間軸化作千紙鶴飛散):
  • 「🍜鳴人!下次用Locale.CHINESE給所有日期加『中文變身』——讓審計署再也挑不出刺!」
🦊 鳴人(啃着拉麪嘟囔):
  • 「🙏其實...時間格式化就像煉丹——火候多了糊,少了生,剛剛好才是真忍術!」
🧾【虎山CTO的終極總結】
  • 時間格式化 → 子午流注,準時準點(系統生物鐘)⏰
  • 本地化 → 因地制宜,入鄉隨俗(跨國報表無憂)🌏
  • 星期映射 → 經脈轉換,氣血互通(防數字轉義崩潰)🔄
**編程如用藥,切忌胡亂君臣——💊
該用Locale時用點穴(Locale.CHINESE),該補零時用仙術(padStart)**

⚠️ 免責聲明(附因果律警告)

本代碼已注入中醫玄學能量,請謹慎使用:

  • ✅ 允許白嫖,但白嫖不點贊可能導致:

    • 下次面試官恰好問到這個算法
    • 鍵盤自動打出//這裏感謝冷溪虎山CTO
    • 奶茶精準灑在剛寫好的代碼上
  • ✅ 允許商用轉發,但商用不註明出處可能觸發:

    • 系統類型混亂自動轉型
    • 數據庫莫名存儲"君臣佐使"字段
  • ✅ 允許吐槽,但吐槽不帶改進建議可能引發:

    • 終生與老闆N連鞭相愛相殺

🚀 現在立即行動:

  1. 點贊 → 吸收本篇算法精華+怪蜀黎腦洞思維
  2. 收藏 → 避免日後求醫無門
  3. 關注 → 接收更多「中醫+代碼」腦洞
  4. 評論區留言 → 領取你的專屬「算法藥方」

⚠️ 友情提示:

  • 本文內容過於硬核,建議點贊收藏轉發三連,避免小編心情波動導致文章神秘消失
  • 畢竟小編今天可能愛答不理,明天可能高攀不起——
  • 但你的收藏夾,永遠是你最穩的知識備份!

    🐶💻 (小聲説:關我小黑屋?不存在的,備份早已同步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同步學習(第十一篇)四語言“字符串替換與填充“對照表: 雷影老闆下達清除“數據歪臉“指令(附源碼/截圖/參數表/避坑指南)
user avatar
0 用戶, 點贊了這篇動態!

發表 評論

Some HTML is okay.