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...
Thanks it's works, i do start=$(date -d"$DateStart" +%s) and end=$(date -d"$DateEnd" +%s) and after time=$(end-start).
Use the build-in date command and instruct it to output the number of seconds since 1970-01-01 00:00:00 UTC. You can do this by passing a format string as parameter to the date command. The format string for UNIX epoch time is '%s'. To convert a specific date and time into UNIX epoch time, use the -d parameter.
To convert the seconds since the epoch started on January 1, 1970 type date -r 1501959335 at the prompt and push enter. Once again, you can replace 1501959335 with any valid Unix time stamp. Type date “$(date -r 1501959335 +'%y%m%d%H%M. %S')” and push enter to set the date since the epoch started.
time() returns the time as the number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC). If tloc is non-NULL, the return value is also stored in the memory pointed to by tloc.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With