转换日期格式:2 位年份到 4 位年份
Posted
技术标签:
【中文标题】转换日期格式:2 位年份到 4 位年份【英文标题】:Convert date format: 2 digit year to 4 digit year 【发布时间】:2021-02-04 19:24:39 【问题描述】:如果我有一个包含日期的字符串,例如 '29/01/21'
,我如何将其格式转换为 4 年数字而不是 2 位数字?
'29/01/21'
到
'29/01/2021'
【问题讨论】:
绝对没有理由重新引入 Y2K 错误。不要出于任何原因存储此类日期。尤其是在 2021 年,也就是劳埃德银行和苏格兰皇家银行银行系统崩溃的一年后,他们的千年虫“修复”开始将20
视为 1920 年
这是我第一次听说这个错误。但我试图用 4 位而不是 2 来存储年份。这没有问题,对吧?
这只是the most famous, most expensive bug in the history of computing。甚至有十几部关于此的电影,包括Entrapment with Sean Connery。至于存储日期,日期不是字符串。 datetime
在 Python 和所有数据库(SQLite 除外)中都是二进制值。同样,永远,永远不要使用或允许使用 2 位数的日期。此外,为什么假设 21 是 2021 年? Captain Tom 出生于 1920 年。你不能假设 21
是 2021 年
从正确的角度来看,您真的真的不想因为 Y2K 错误而搞砸疫苗接种。现在有很多人正在接种疫苗,如果你只存储两位数字,他们的出生日期将改变 100 年
不幸的是,我们中的一些人收到这样的数据,因为它们来自我们无法控制的遗留系统。但是有人没有听说过千年虫,却让我觉得很古老。
【参考方案1】:
Python 的日期时间库可能会有所帮助。
请参考以下代码。
from datetime import datetime
datetime.datetime.strptime('29/01/21', '%d/%m/%y').strftime("%M/%d/%Y")
【讨论】:
【参考方案2】:这是一种解决方案:
mystring = '29/01/21'
mystring = mystring[:6]+'20'+mystring[-2:]
print(mystring)
输出:
'29/01/2021'
【讨论】:
以上是关于转换日期格式:2 位年份到 4 位年份的主要内容,如果未能解决你的问题,请参考以下文章