Schrift
[thread]6472[/thread]

Datestamp in Sekunden umwandeln: seit Epochenbegin



<< >> 5 Einträge, 1 Seite
Froschpopo
 2004-08-08 13:53
#85574 #85574
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich hab einen ganz normalen Datestamp:

2004-08-07 13:22:21

nun hätte ich gerne gewusst, wieviele Sekunden das seit Epochenbegin sind. Gibt es dafür eine Funktion oder sowas?
sowas wie das ergebnis von time() suche ich...
pq
 2004-08-08 14:02
#85575 #85575
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
perldoc Time::Local
perldoc -f split
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2004-08-08 14:28
#85576 #85576
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
timelocal($sec, $min, $h, (localtime)]3,4,5]); hab ich jetzt mal gemacht... jau !danke!
Strat
 2004-08-08 15:06
#85577 #85577
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@froschpopo: die Monate haben fuer localtime und timelocal werte von 0..11, und die jahre werden seit 1900 gezaehlt...
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
use Time::Local;

my $string = "2004-08-07 13:22:21";
my $timestamp;
if ($string =~ /^ (\d{4}) \- (\d\d) \- (\d\d) \s+ (\d\d) \: (\d\d) \: (\d\d) $/x) {
  # ist hier die Reihenfolge ok? jahr-monat-tag ? oder ist es jahr-tag-monat?
  my ($year, $month, $day, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6);
  $month--; $year -= 1900;
  $timestamp = timelocal($sec, $min, $h, $day, $month-1, $year-1900);
}
print "TIMESTAMP: $timestamp" if defined $timestamp;
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
tomlong
 2004-08-08 15:30
#85578 #85578
User since
2003-08-04
93 Artikel
BenutzerIn
[default_avatar]
@strat ... mit den Monaten ist richtig, kann im ersten Moment zu Verwirrungen bei ner Umwandlung von dem Format bringen:
Sun Aug 8 13:10:10 2004

aber bei den Jahren kann man etwas relaxter an die Sache gehen, denn:
Quote
o Years greater than 999 are interpreted as being the
actual year, rather than the offset from 1900. Thus,
1963 would indicate the year Martin Luther King won
the Nobel prize, not the year 2863.

o Years in the range 100..999 are interpreted as offset
from 1900, so that 112 indicates 2012. This rule also
applies to years less than zero (but see note below
regarding date range).

o Years in the range 0..99 are interpreted as shorthand
for years in the rolling "current century," defined as
50 years on either side of the current year. Thus,
today, in 1999, 0 would refer to 2000, and 45 to 2045,
but 55 would refer to 1955. Twenty years from now, 55
would instead refer to 2055. This is messy, but
matches the way people currently think about two digit
dates. Whenever possible, use an absolute four digit
year instead.
Live long and prosper!
42;
<< >> 5 Einträge, 1 Seite



View all threads created 2004-08-08 13:53.