[BusyBox] sugestion: date -d extension

Gyorgy Farkas gf.mail at freemail.hu
Sat Jun 4 12:54:55 UTC 2005

On Tue May 31 walter harms wrote:

> i drop over the problem with these example
> gnudate:
> date -d "2005-01-01 10:00:00" +"%s"

and on a regular Linux box the result is (timezone set to CET)

> bbdate:
> date -d "2005-01-01 10:00:00" +"%s"
> date: invalid date `2005-01-01 10:00:00'

on BB (TZ is CET-1CEST)
date -d "2005.01.01-10:00:00" +"%s"

> or this fancy trick to convert between Epoch and localtime
> (from gnu date examples)
> date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
> 2000-01-01 01:00:00 +0100
> date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
> date: invalid date `1970-01-01 UTC 946684800 seconds'

on the above mentioned BB box

date -d "1970.01.01-00:00:`expr 946684800 + 3600`"
+"%Y-%m-%d %T %Z"
2000-01-01 01:00:00 CET

date -d "1970.01.01-00:00:`expr 946684800 + 3600`"
+"%Y-%m-%d %T %z"
2000-01-01 01:00:00 -0100

> by looking at the code i came up with the idea to add a
'hint' to ease 
> the conversion since most times ppl are aware what the
input format is 
> like. The point is that the gnu date conversion is very
powerfull but
> IMHO overkill for busybox.

IMHO that "fancy trick" to convert between 'seconds since
EPOCH' and 'localtime' is more than a simple string format
There can be some Perl and C magic on GNU.

A little simple scripting is required also on BusyBox -
generally speaking

# from a hardwired constant to some sophisticated algorithm

seconds=`expr $seconds_since_Epoch - $offset_in_seconds`
date -d "1970.01.01-00:00:$seconds" +"..."

For example at CET/CEST the offset_in_seconds is either
-3600 or -7200
(-7200  from the last Sun of Mar/first Sun of Apr  to the
last Sun of Oct ;)
so - I think - a little scripting is really needed.


BB v1.00 on floppyfw-2.99.4, kernel 2.4.30, uClibc-0.9.27 -
at UTC of course

More information about the busybox mailing list