User1 User1 - 1 month ago 13
Linux Question

How to convert YYYYMMDDHHMMSS to a date readable by `date`

I have a set of date/time strings in the YYYYMMDDHHMMSS format that I want to convert to something readable by the

date
utility. Usually, I can do something like:

date -d "2010-10-01 12:34:56"


However,
date
does not like the YYYYMMDDHHMMSS:

date -d "20100101123456"
..invalid date

So, I probably need to refine the string to be in the prior format. I'm thinking
sed
is the answer, but it gets ugly very fast. I'm quite certain my strings will be the proper format, so how do I easily convert them?

Answer

date doesn't allow "YYYYMMDDHHMMSS", but it does "YYYYMMDD HH:MM:SS", so:

D="20100101123456"
date -d "${D:0:8} ${D:8:2}:${D:10:2}:${D:12:2}"