Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

How can you calculate the number of days since 1/1/1970? This is for updating the shadowLastChange attribute on OpenLDAP.

Is there a way to do this using the linux date command?

share|improve this question
In Bash and most modern Bourne-derived shells, $() is preferred over backticks for readability and other reasons. echo $(( $(date ...) / 86400 )) – Dennis Williamson Jan 10 '11 at 14:03
Don't have 2000 yet... can someone edit and fix the title :-) – ringø Jan 10 '11 at 14:32

3 Answers 3

up vote 13 down vote accepted

ring0 beat me by a few seconds, but the full command is:

echo $(($(date --utc --date "$1" +%s)/86400))

This goes by UTC time. Result:

root@hostname:~# echo $((`date --utc --date "$1" +%s`/86400))

A quick check with WolframAlpha shows that this is the correct value.

share|improve this answer
thanks for the fairness ;-) – ringø Jan 14 '11 at 18:29
what about leap seconds? :) – netvope Feb 21 at 23:43

The date command can give you the number of seconds since 1970-01-01 00:00:00 UTC.

  date +"%s"

You can divide the result by 3600*24 to get the number of days (UTC).

E.g. in Bash

  x=`date +"%s"` ; echo $(( $x / 3600 / 24 ))

to display the number of days.

share|improve this answer

I think this is the simplest method:

expr $(date +%s) / 86400
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.