/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
unix-tid vs. lokaltid
Fra : Rasmus Bøg Hansen


Dato : 16-04-02 12:10

Hej

Jeg er blevet spurgt, hvorvidt jeg kender en måde at konvertere de
forfærdeligt lange unix-tider (de ticifrede sekunder siden 1970) til et
læseligt format...

Naturligvis er der localtime(), men er der et passende program, som kan
bruges i scripts ol.?

Ellers må jeg vel lave et til ham (men det kan umuligt tage lang tid)

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
The Internet is full. Go away.
-- Joel Furr
----------------------------------[ moffe at amagerkollegiet dot dk ] --

 
 
Peter Makholm (16-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 16-04-02 12:44

Rasmus Bøg Hansen <moffe47@hotmail.com> writes:

> Jeg er blevet spurgt, hvorvidt jeg kender en måde at konvertere de
> forfærdeligt lange unix-tider (de ticifrede sekunder siden 1970) til et
> læseligt format...

Med date(1), men ok det er en lidt spøjs måde man skal gøre det på:

pma-20% date +%s
1018957287
pma-20% LC_TIME=da_DK date -d '1970-01-01 1018957287 sec' +%c
tir 16 apr 2002 12:41:27 CEST
pma-20%


Det magiske er '-d 1970-01-01 <antal sekunder> sec', resten er bare
formateringsting.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Rasmus Bøg Hansen (16-04-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 16-04-02 13:13

Peter Makholm wrote:


>> Jeg er blevet spurgt, hvorvidt jeg kender en måde at konvertere de
>> forfærdeligt lange unix-tider (de ticifrede sekunder siden 1970) til et
>> læseligt format...

> pma-20% date +%s
> 1018957287
> pma-20% LC_TIME=da_DK date -d '1970-01-01 1018957287 sec' +%c
> tir 16 apr 2002 12:41:27 CEST

Oh ja, den havde jeg ikke lige gennemskuet - men jeg takker.

> Det magiske er '-d 1970-01-01 <antal sekunder> sec', resten er bare
> formateringsting.

Og det virker!

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
"Memory is like gasoline. You use it up when you are running. Of
course you get it all back when you reboot.
-- Microsoft help desk
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Peter Makholm (16-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 16-04-02 13:23

Rasmus Bøg Hansen <moffe47@hotmail.com> writes:

> Oh ja, den havde jeg ikke lige gennemskuet - men jeg takker.

Det krævede også at jeg kikkede meget dybt i info-filen efter hvordan
-d-flaget virkede.


Jeg var lige ved bare at svare

$ perl -e 'print scalar localtime$_,"\n"for(@ARGV)' <tal>*

Men jeg ville finde en non-(perl|python|<dit yndlings
scriptingsprog>)-løsning.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Rasmus Bøg Hansen (16-04-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 16-04-02 14:53

Peter Makholm wrote:

> Det krævede også at jeg kikkede meget dybt i info-filen efter hvordan
> -d-flaget virkede.

> Jeg var lige ved bare at svare
>
> $ perl -e 'print scalar localtime$_,"\n"for(@ARGV)' <tal>*

Det endte faktisk med at blive perl-udgaven. date har åbenbart problemer med
sommertid; det fungerede problemfrit med perl...

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
if (!strcmp(getenv(EDITOR), "vi") {karma++};
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Peter Makholm (16-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 16-04-02 14:58

Rasmus Bøg Hansen <moffe47@hotmail.com> writes:

> Det endte faktisk med at blive perl-udgaven. date har åbenbart problemer med
> sommertid; det fungerede problemfrit med perl...

Hvilke problemer?

Min date skriver da helt fint sommertid.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Rasmus Bøg Hansen (16-04-2002)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 16-04-02 15:53

Peter Makholm wrote:

> Rasmus Bøg Hansen <moffe47@hotmail.com> writes:
>
>> Det endte faktisk med at blive perl-udgaven. date har åbenbart problemer
>> med sommertid; det fungerede problemfrit med perl...
>
> Hvilke problemer?

moffe@grignard# date +%s
1018968514
moffe@grignard# perl -le 'print scalar localtime 1018968514'
Tue Apr 16 16:48:34 2002
moffe@grignard# LC_TIME=da_DK date -d '1970-01-01 1018968514 sec' +%c
tir 16 apr 2002 15:48:34 CEST
moffe@grignard# date
tir apr 16 16:52:21 CEST 2002

Kørt kl. 16:48. 15:48:34 CEST er i hvert fald ikke lokaltiden.

> Min date skriver da helt fint sommertid.

Det gør den også, når jeg beder den skrive systemtiden, men det går galt,
når den skal omsætte unix-tiden til en dato...

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
Chewbacca is actually not a bad SysAdmin icon. He's large, tends
towards inarticulate grunts, doesn't shave, get's stuck with a lot of
the technical work, and gets blamed and yelled at when it doesn't work.
-- Mike Sphar
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Claus Rasmussen (16-04-2002)
Kommentar
Fra : Claus Rasmussen


Dato : 16-04-02 18:08

Rasmus Bøg Hansen wrote:

> Peter Makholm wrote:
>
>> Min date skriver da helt fint sommertid.
>
> Det gør den også, når jeg beder den skrive systemtiden, men det går galt,
> når den skal omsætte unix-tiden til en dato...

Det er fordi 'date +%s' returnerer antal sekunder siden 1970-01-01 uden
hensyn til lokaltiden (ellers ville den gå tilbage i tid når man skifter
til sommertid og skabe kaos i hele systemet). Dette er så vidt jeg kan
læse i modstrid med, hvad info-siden siger.

Men altså; hvis du i stedet skriver:

date -d "1970-01-01 $(date +%s) sec UTC"

får du det rigtige resultat.

-Claus

Peter Makholm (16-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 16-04-02 19:52

Claus Rasmussen <clr@cc-consult.dk> writes:

> Men altså; hvis du i stedet skriver:
>
> date -d "1970-01-01 $(date +%s) sec UTC"

Min fejl. Det burde jeg have tænkt på. Jeg har ellers ofte selv kæmpet
med samme fejl, hvornår lærer jeg dog at huske UTC.

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Hroi Sigurdsson (16-04-2002)
Kommentar
Fra : Hroi Sigurdsson


Dato : 16-04-02 20:33

Peter Makholm wrote:

> Det magiske er '-d 1970-01-01 <antal sekunder> sec', resten er bare
> formateringsting.

Tager jeg fejl hvis jeg siger at "date -d" er en proprietær ting?

--
Hroi Sigurdsson hroi@asdf.dk
Danske nyhedsfeeds i RSS-format: http://asdf.dk/rss/da/

Peter Makholm (16-04-2002)
Kommentar
Fra : Peter Makholm


Dato : 16-04-02 22:05

Hroi Sigurdsson <hroi@asdf.dk> writes:

>> Det magiske er '-d 1970-01-01 <antal sekunder> sec', resten er bare
>> formateringsting.
>
> Tager jeg fejl hvis jeg siger at "date -d" er en proprietær ting?

Det ser ud til at være en GNU-ting. På 4.4BSD ser 'date -r 1000000000'
ud til at løse opgaven.

Er der en der har en udgave af Posix-specifikationen for date(1)?

--
Emacs er det eneste moderne styresystem der ikke er multitrådet.

Kim Hansen (16-04-2002)
Kommentar
Fra : Kim Hansen


Dato : 16-04-02 13:12

Rasmus =?ISO-8859-15?Q?B=F8g?= Hansen <moffe47@hotmail.com> writes:

> Hej
>
> Jeg er blevet spurgt, hvorvidt jeg kender en måde at konvertere de
> forfærdeligt lange unix-tider (de ticifrede sekunder siden 1970) til et
> læseligt format...
>
> Naturligvis er der localtime(), men er der et passende program, som kan
> bruges i scripts ol.?

localtime findes også i Perl:

ssdweb$ perl -le 'print scalar localtime'
Tue Apr 16 14:05:27 2002
ssdweb$ perl -le 'print scalar localtime 10'
Thu Jan 1 01:00:10 1970
ssdweb$

Det er den løsning jeg plejer at bruge.

--
Kim Hansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408889
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste