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.