Python/JS/Go/Java同步学习(第十八篇)四语言“常用时间类型格式化“对照表: 财务“小南“纸式格式化术处理凭证内容崩溃(附源码/截图/参数表)

72 阅读17分钟
🤝 免骂声明:
  • 本文常用时间类型格式化操作经本蜀黎实战整理,旨在提供快速参考指南📝
  • 因各语言版本迭代及不同系统环境差异,偶尔可能出现整理不全面之处,实属正常✅
  • 欢迎理性交流补充,喷子勿喷——毕竟你行你上来写,我敬你是条汉子,告诉我的你原文链接,我给你一键三连+转发👍!
  • 若遇具体问题,请带图评论区留言,本蜀黎必拔码相助🤝 在这里插入图片描述
🔥【特别说明·时间篇章启航】🔥
  • 各位兄弟姐妹请注意!本篇为《时间格式化·基础速通篇》🥉
⏳为何先学本篇?
  • 覆盖日常开发中 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 周四

📊【四语言时间格式化战力对比表】

语言核心函数星期处理本地化支持实战指数
Pythonstrftime/format%a→英文 %w→数字Locale需额外配置⭐⭐⭐⭐
JavaDateTimeFormatterE→中文Locale.CHINESE⭐⭐⭐⭐⭐
GoFormat("2006-01-02")Mon→英文需手动映射⭐⭐⭐
JSIntl.DateTimeFormatweekday: '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/公众号/网盘!)

📚 往期爆文推荐,VIP轮换解锁:

📖Python/JS/Go/Java四语言同步学习,跨语言系列上线(别在纠结学什么单语言了)

🔍 没看过前传?快补课! 1-10篇请移步至"PY-JS-GO-JAVA基础进阶学习系列"合集中阅读

🌌平台算法容忍度测试系列上线,共三篇
✨跟大家创作方向获取流量息息相关,尽快留存以防下架
🚀编程算法难懂?
✅编程算法中医药版上线,后续会更新:
Python工具箱系列上线,复制粘贴就能用✅✅:

✨碰到 其他卡顿问题| 其他数据抓取"正则"匹配问题? #### JetBrains 全家桶性能优化 ,点击以下链接👇👇直达其他爆款指南:

PS:按顺序看效果更佳!从 Java 到 Python,从 Web 到 C/C++,再到数据库——一套逻辑通吃 JetBrains 全家桶!
  • 转发给团队里还在用默认配置的同事,救救他们的电脑和头发!"

  • “💡 不用东找西找——你要的「性能调优×数据抓取」爆款攻略,这里全都有!点击↑↑↑快速查漏补缺!”

----------------------------------------------------

💡✨本文采用【开源共享】协议!欢迎转载、洗稿、甚至做成视频!只需保留原作者署名(ERP老兵-冷溪虎山),让我们一起把跨界技术的快乐传递出去!。
让我们一起把快乐和效率带给更多人!,缺爆款素材的兄弟姐妹可以关注私我,保证你用不完的爆款素材🚀🚀

素材代码单链表