如何以非常规格式将数字转换为日期

时间:2015-07-07 20:03:10

标签: linux bash unix

我有一个以美​​国格式记录日期的文本文件(MMDDYY,例如070715)。我想知道是否有一种简单的方法将其转换为日期,因为我需要进行日期计算。我注意到有一个日期命令允许您将字符串转换为日期(日期-d"字符串")但它只能以某种方式读取日期。我可以做一些子串操作来转换为所需的格式,但似乎应该有更简单的方法来做到这一点。
谢谢

2 个答案:

答案 0 :(得分:3)

使用BASH字符串操作,您可以:

s='070515'
date -d "20${s: -2}-${s:0:2}-${s:2:2}"
Sun Jul  5 00:00:00 EDT 2015

答案 1 :(得分:0)

您可以使用sed将MMDDYY转换为YYYYMMDD:

sed 's/\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)/20\3\1\2/'

这假设(a)21世纪的所有日期(20xx)和(b)日期是文件中的唯一或至少第一个字段。如果不是,则可以使用更复杂的表达式。