[vdr] Re: timer problem
Nicolas Huillard
nhuillard at e-dition.fr
Thu Jun 2 11:37:17 CEST 2005
Rainer Zocholl a écrit :
> Sergei.Haller at math.uni-giessen.de(Sergei Haller) 01.06.05 17:16
>
>>no. time_t is the number of seconds since 1970-01-01 in UTC.
>>a time value as time_t is _unique_.
>
>>the call
>> date -d "1970-01-01 1117634400 sec"
>
>>is _not_ translation from time_t to human readable time.
>>you are kind of "cheating" telling date to recalculate the time
>>"1970-01-01 00:00:1117634400" in whatever time zone it expectes it.
>
> That "cheat" is documented in some man pages for (GNU) "date".
Well, it seems that using "date" adds the complexity of time-zone
handling to the simple date-difference calculation. There is the
from-TZ, the to-TZ, the fact that summer-time is either applied to the
date you provide (1970-01-01) or the date resulting from the calculation
(now in "summer")...
Avoid the problem is one way to solve it : just make sure you do not
deal with time-zones when you want to make date calculations. Your
samples with UTC *and* --utc seems all correct...
Then apply you time-zone adjustments, or consider your clock
(hardware-clock) is UTC (as recommended by every Linux admin), and voilà...
> "info date" says:
>
> * To convert a date string to the number of seconds since the epoch
> (which is 1970-01-01 00:00:00 UTC), use the `--date' option with
> the `%s' format. That can be useful in sorting and/or graphing
> and/or comparing data by date. The following command outputs the
> number of the seconds since the epoch for the time two minutes
> after the epoch:
>
> date --date='1970-01-01 00:02:00 +0000' +%s
> 120
>
> If you do not specify time zone information in the date string,
> `date' uses your computer's idea of the time zone when
> interpreting the string. For example, if your computer's time
> zone is that of Cambridge, Massachusetts, which was then 5 hours
> (i.e., 18,000 seconds) behind UTC:
>
> # local time zone used
> date --date='1970-01-01 00:02:00' +%s
> 18120
>
> * If you're sorting or graphing dated data, your raw date values may
> be represented as seconds since the epoch. But few people can
> look at the date `946684800' and casually note "Oh, that's the
> first second of the year 2000 in Greenwich, England."
>
> date --date='2000-01-01 UTC' +%s
> 946684800
>
> An alternative is to use the `--utc' (`-u') option. Then you may
> omit `UTC' from the date string. Although this produces the same
> result for `%s' and many other format sequences, with a time zone
> offset different from zero, it would give a different result for
> zone-dependent formats like `%z'.
>
> date -u --date=2000-01-01 +%s
> 946684800
>
>
> *To convert such an unwieldy number of seconds back to a more*
> *readable form, use a command like this:*
>
> # local time zone used
> date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
> 1999-12-31 19:00:00 -0500
>
> Often it is better to output UTC-relative date and time:
>
> date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"
> 2000-01-01 00:00:00 +0000
>
>
> I don't see why this is a "cheat" (= not intended way of usesage)
> and why it should be required to have "self programming" such function.
> Of cause the risc of errors is low if all use exactly teh same
> routine.
>
>
>
> The man page example is missleading.
> date will interpret the "1970-01-01" with the current timezone...
>
> It must read:
> # date -d "1970-01-01 UTC 1117634400 sec"
> Wed Jun 1 16:00:00 CEST 2005
> as the "-utc" relates to output.
> # date -u -d "1970-01-01 UTC 1117634400 sec"
> Wed Jun 1 14:00:00 UTC 2005
>
> But i still do not undestand why here is a 1h offset
> if nothing is given.
> I would assuem that the timezone would be komensated
> # date -d "1970-01-01 1117634400 sec"
> Wed Jun 1 15:00:00 CEST 2005
>
>
>
>
> BTW:
> # date -u -d "1970-01-01 1117634400 sec "
> Wed Jun 1 14:00:00 UTC 2005
>
> # date -u -d "1970-01-01 1117634400 sec GMT"
> Wed Jun 1 14:00:00 UTC 2005
>
> # date -d "1970-01-01 1117634400 sec GMT"
> Wed Jun 1 16:00:00 CEST 2005
>
>
>
> # date -u -d "1970-01-01 1117634400 sec CEST"
> Wed Jun 1 12:00:00 UTC 2005
> # date -u -d "1970-01-01 1117634400 sec CET"
> Wed Jun 1 13:00:00 UTC 2005
> Two different times...
>
> # date -u -d "1970-01-01 1117634400 sec MET"
> Wed Jun 1 13:00:00 UTC 2005
> # date -u -d "1970-01-01 1117634400 sec MEST"
> Wed Jun 1 12:00:00 UTC 2005
> Two different times...
>
>
> # date -d "1970-01-01 1117634400 sec CET"
> Wed Jun 1 15:00:00 CEST 2005
> # date -d "1970-01-01 1117634400 sec CEST"
> Wed Jun 1 15:00:00 CEST 2005
> One time ...
>
> # date -u -d "1970-01-01 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 14:00:00 +0000 UTC
> # date -u -d "1970-01-01 UTC 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 14:00:00 +0000 UTC
> # date -u -d "1970-01-01 MET 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 13:00:00 +0000 UTC
> # date -u -d "1970-01-01 MEST 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 12:00:00 +0000 UTC
> # date -d "1970-01-01 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 15:00:00 +0200 CEST
> # date -d "1970-01-01 UTC 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 16:00:00 +0200 CEST
>
> # date -d "1970-01-01 MET 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 15:00:00 +0200 CEST
> # date -d "1970-01-01 MEST 1117634400 sec" +"%D %T %z %Z"
> 06/01/05 14:00:00 +0200 CEST
>
> # date -d "1970-01-01 1117634400 sec CEST" +"%D %T %z %Z"
> 06/01/05 15:00:00 +0200 CEST
> # date -d "1970-01-01 1117634400 sec CET" +"%D %T %z %Z"
> 06/01/05 15:00:00 +0200 CEST
>
>
> That looks like "MEST" is defined other than "CEST"?
--
NH
More information about the vdr
mailing list