1900年之前的日期无法格式化问题求助
解决1900年之前日期格式化的问题
嘿,这个问题我之前也碰到过!很多常用的日期处理工具(不管是Excel还是编程语言里的内置库)都对1900年之前的日期有范围限制,所以直接用常规的日期格式化方法会失效,给你几个实用的解决办法:
如果你用的是Excel
- 手动文本拼接法:如果你的日期已经是文本形式(比如
1850-05-20),别费劲转成日期格式了,直接用字符串拼接来实现想要的格式。比如A1单元格是目标日期,要格式化为「YYYY年MM月DD日」,可以用这个公式:=LEFT(A1,4)&"年"&MID(A1,6,2)&"月"&RIGHT(A1,2)&"日" - VBA自定义函数批量处理:如果要处理大量早日期,写个简单的VBA函数更高效:
按Alt+F11打开VBA编辑器,插入模块后粘贴以下代码:
回到Excel界面,在单元格里调用Function FormatEarlyDate(dateStr As String, formatStr As String) As String ' 假设输入日期格式为yyyy-mm-dd,可根据你的实际格式调整拆分逻辑 Dim y As Integer, m As Integer, d As Integer y = Left(dateStr, 4) m = Mid(dateStr, 6, 2) d = Right(dateStr, 2) ' 替换格式字符串中的占位符,支持yyyy、mm、dd FormatEarlyDate = Replace(Replace(Replace(formatStr, "yyyy", y), "mm", m), "dd", d) End Function=FormatEarlyDate(A1,"yyyy年mm月dd日")就能快速格式化了。
如果你用编程处理(以Python为例)
- 手动字符串拆分格式化:最简单直接的方式,把日期字符串拆成年月日再拼接:
date_str = "1899-12-31" year, month, day = date_str.split("-") formatted_date = f"{year}年{month}月{day}日" print(formatted_date) # 输出:1899年12月31日 - 用支持早日期的第三方库:很多第三方库突破了1900年的限制,比如
python-dateutil或者arrow:
先安装python-dateutil:
然后解析并格式化:pip install python-dateutil
或者用from dateutil.parser import parse date_obj = parse("1850-05-20") formatted_date = date_obj.strftime("%Y年%m月%d日") print(formatted_date) # 输出:1850年05月20日arrow库(语法更简洁):pip install arrowimport arrow date_obj = arrow.get("1800-01-01") formatted_date = date_obj.format("YYYY年MM月DD日") print(formatted_date) # 输出:1800年01月01日
核心思路就是:既然标准工具不支持早日期,要么直接操作字符串,要么换用支持更广日期范围的工具~
内容的提问来源于stack exchange,提问作者william007




