Take the 2-minute tour ×
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 :-) –  ring0 Jan 10 '11 at 14:32

2 Answers 2

up vote 10 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))
14984

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

share|improve this answer
    
thanks for the fairness ;-) –  ring0 Jan 14 '11 at 18:29

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

Your Answer

 
discard

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.