Convert an ISO date to seconds since epoch in linux bash
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
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.