If you have a system with the GNU version of date, then date -u +%s
will give the seconds since the Epoch. Unfortunately, it only works with GNU date, and so will not work on Solaris, HP-UX or no doubt many other Unix systems. The following script should compute this is a portable manner. Here's a few examples On sage.math, where date accepts +%s kir...@sage:~$ date -u +%s && ./unixtime 1260720556 1260720556 On an HP-UX system, where date does *not* accept +%s bash-2.04$ uname -a HP-UX hpbox B.11.11 U 9000/785 2016698240 unlimited-user license bash-2.04$ ./unixtime && date -u +%s 1260720771 date: bad format character - s On an OpenSolaris system, where date does *not* accept +%s bash-3.2$ ./unixtime && date -u +%s 1260720823 %s On an IBM server running AIX 6.1, where date does accept +%s $ uname -a AIX client1 1 6 00C6B7C04C00 $ ./unixtime && date -u +%s 1260721013 1260721013 For every system I am able to check this on, the following script gives exactly the same output as the GNU date command, but in a more portable manner. Could a few people check it on their systems. If it does work, I'd propose it is used in place of the GNUism introduced in http://trac.sagemath.org/sage_trac/ticket/6744 Currently the file .BUILDSTART created by #6744 is not actually used anywhere in Sage, but clearly the intension is to use it at some point, in which case it will be found not to work on some systems. Dave ----------------------------------------------- #!/bin/sh # Compute seconds since the Epoch. # Call 'date'. Note that # %Y = year including century # %j = day number (1-365) # %H = hour (0-23) # %M = minute (0-59) # %S = seconds (0-59) if type env >/dev/null 2>&1 ; then set -- `env LC_ALL=C LC_TIME=C LANG=C date -u '+%Y %j %H %M %S'` else set -- `date -u '+%Y %j %H %M %S'` fi # $1 = year including century # $2 = day number (1-365) # $3 = hour (0-23) # $4 = minute (0-59) # $5 = seconds (0-59) if [ $? -ne 0 ] || [ $# -lt 5 ] ; then TIME="Error computing seconds since the Epoch" fi DAYS=`expr 365 \* \( $1 - 1970 \) + \( $1 - 1969 \) / 4 + $2 - 1` TIME=`expr $5 + 60 \* \( $4 + 60 \* \( $3 + 24 \* $DAYS \) \)` echo $TIME -- To post to this group, send an email to [email protected] To unsubscribe from this group, send an email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
