Domanda

I have a date in the ISO format YYYY-MM-DDTHH:SS (e.g. 2014-02-14T12:30). I'd like to convert it in seconds since epoch using only the date command in linux bash.

All the dates refer to UTC locale.

I know that this question is easily eligible for duplicate... there are billions of questions about converting dates from one format to another but I can't find my particular scenario

thank you...

È stato utile?

Soluzione

With GNU date (from the GNU coreutils package), specify the date to parse with -d and seconds since epoch with %s

$ date -d"2014-02-14T12:30" +%s
1392381000

Note that this will interpret the date to be parsed as being in your local time zone. If you want date to use a specific time zone, you must specify that, either via the variable TZ (which changes the default time zone for date), or in the date string. For UTC:

$ TZ=UTC date -d"2014-02-14T12:30" +%s
1392381000

or in the string, according to ISO 8601:

$ date -d"2014-02-14T12:30Z" +%s
1392381000

See ISO 8601 on Wikipedia for how to specify other time zones in the date string.

Altri suggerimenti

It is easier if you install gdate to deal with date strings that have timezones with nano second precision

install coreutils and you will get gdate along

on mac brew install coreutils

gdate --date="2010-10-02T09:35:58.203Z" +%s%N

This is particularly useful when inserting the time series value into influxdb

in a shell script variable = $(gdate --date="2010-10-02T09:35:58.203Z" +%s%N)

echo $variable
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top