Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10416[/thread]

Datum zusammen stellen - das geht auch besser



<< >> 8 Einträge, 1 Seite
pktm
 2007-09-18 23:22
#99629 #99629
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wie kann man das besser machen?
Code: (dl )
my $datum = ((localtime())[5]+1900) . '-' . ((localtime())[4]+1) . '-' . ((localtime())[3]);


Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
ptk
 2007-09-18 23:29
#99630 #99630
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mit einer Zwischenvariablen wird es bestimmt lesbarer. Außerdem möchtest du bestimmt sprintf verwenden, damit Monat und Tag bei Bedarf eine führende Null bekommen.
Linuxer
 2007-09-19 00:14
#99631 #99631
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

böser Code... Wenn der Code zum Jahreswechsel läuft, kann das lustig werden, wenn auf einmal der 1.1. des Vorjahres rauskommt, oder wie?

mein Vorschlag wäre:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $datum = get_date();

sub get_date {

  my ($dd, $mm, $yy ) = ( localtime() )[3..5];
  $yy += 1900;
  $mm += 1;
  return sprintf( "%04d-%02d-%02d", $yy, $mm, $dd );
}
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
esskar
 2007-09-19 08:38
#99640 #99640
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code (perl): (dl )
1
2
use POSIX qw(strftime);
my $date = strftime "%Y-%m-%d", localtime;
Linuxer
 2007-09-19 12:41
#99648 #99648
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
hm, ich sollte mir vielleicht mal POSIX näher anschauen ;)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
sid burn
 2007-09-19 14:41
#99666 #99666
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Time::localtime ist auch ganz nett, ist jedenfalls schöner die Werte auszulesen.
Ansonsten bevorzuge ich mitlerweile DateTime für jede Art von Datumausgaben/Rechnungen.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use strict;
use warnings;
use Time::localtime;
use DateTime;

printf "%02d-%02d-%04d\n", localtime->mday, localtime->mon + 1, localtime->year + 1900;
print DateTime->today->dmy('-'), "\n";
print DateTime->new(day => 31, month => 12, year => 2007)->dmy('-'), "\n";


Gegen POSIX spricht eher das das Modul so unheimlich groß ist. Möchtest du nur strftime() haben dann kannst du auch das Modul Date::Format nutzen.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
nepos
 2007-09-19 16:14
#99681 #99681
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Was spricht dagegen, einfach
Code (perl): (dl )
use POSIX qw(strftime);
zu schreiben?
ptk
 2007-09-19 22:46
#99712 #99712
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
sid burn+2007-09-19 12:41:26--
Code (perl): (dl )
printf "%02d-%02d-%04d\n", localtime->mday, localtime->mon + 1, localtime->year + 1900;
Hier hast du doch auch die oben erwähnte Race condition...
Quote
Gegen POSIX spricht eher das das Modul so unheimlich groß ist.

Guck dir mal den Sourcecode von POSIX.pm an. Zumindestens der Perl-Teil bis zum __END__ ist recht klein.
<< >> 8 Einträge, 1 Seite



View all threads created 2007-09-18 23:22.