Get current time in seconds since the Epoch on Linux, Bash
I need something simple like date
, but in seconds since 1970 instead of the current date, hours, minutes, and seconds.
date
doesn't seem to offer that option. Is there an easy way?
这应该工作:
date +%s
Just to add.
Get the seconds since epoch(Jan 1 1970) for any given date(eg Oct 21 1973).
date -d "Oct 21 1973" +%s
Convert the number of seconds back to date
date --date @120024000
The command date
is pretty versatile. Another cool thing you can do with date(shamelessly copied from date --help
). Show the local time for 9AM next Friday on the west coast of the US
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Better yet, take some time to read the man page http://www.manpages.info/linux/date.1.html
So far, all the answers use the external program date
.
Since Bash 4.2, printf
has a new modifier %(dateformat)T
that, when used with argument -1
outputs the current date with format given by dateformat
, handled by strftime(3)
( man 3 strftime
for informations about the formats).
So, for a pure Bash solution:
printf '%(%s)Tn' -1
or if you need to store the result in a variable var
:
printf -v var '%(%s)T' -1
No external programs and no subshells!
Since Bash 4.3, it's even possible to not specify the -1
:
printf -v var '%(%s)T'
(but it might be wiser to always give the argument -1
nonetheless).
If you use -2
as argument instead of -1
, Bash will use the time the shell was started instead of the current date (but why would you want this?).