Schrift
[thread]6787[/thread]

ungültige Datumseingaben (Seite 2)



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
jan10001
 2005-03-14 22:31
#52636 #52636
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
@ptk
Ich hatte den vorgeschlagenen Syntax benutzt.
Code: (dl )
if (check_date($year,$month,$day))
pKai
 2005-03-14 22:39
#52637 #52637
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,14.Mar..2005, 18:37]@pKai
Damit es läuft mußte noch "-1900" rein, aber jetzt läufts. :)[/quote]
Wieso?
perldoc Time::Local
Quote
Strictly speaking, the year should also be specified in a form
consistent with localtime(), i.e. the offset from 1900. In order to make
the interpretation of the year easier for humans, however, who are more
accustomed to seeing years as two-digit or four-digit values, the
following conventions are followed:

* 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.

...
BUGS
The whole scheme for interpreting two-digit years can be considered a
bug.
:D

Sollte allerdings fast nie ein Unterschied machen. Einziges Bsp. was mir spontan einfiel:
[29, 2, 1900], (kein Schaltjahr) was bei dir als (0,0,0,29,1,0) eingekippt wird, wird von timelocal (siehe perldoc Time::Local; im Teil der oben nicht zitiert wurde "...") als 29.2.2000 angesehen. Und dies war bekanntlich ein Schaltjahr.\n\n

<!--EDIT|pKai|1110834526-->
I sense a soul in search of answers.
ptk
 2005-03-15 18:24
#52638 #52638
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=jan10001,14.03.2005, 21:31]@ptk
Ich hatte den vorgeschlagenen Syntax benutzt.
Code: (dl )
if (check_date($year,$month,$day))
[/quote]
Genau diese Syntax funktioniert. Poste doch ein Gegenbeispiel.
jan10001
 2005-03-16 00:47
#52639 #52639
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
@pKai
Ich habe das Jahr 4 stellig übergeben z.B. 2005 da gabs nen Error.

@ptk
Ja er funktioniert hat er, nur war alles ungültig. Oder ist das ein falscher Syntax?
Code: (dl )
1
2
3
if (check_date($year,$month,$day)) {
.....
}
pKai
 2005-03-16 07:35
#52640 #52640
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,15.Mar..2005, 23:47]@pKai
Ich habe das Jahr 4 stellig übergeben z.B. 2005 da gabs nen Error. [/quote]
Was für eine "error" (warning?) war das?
Durch das eval wird ja eigentlich das croak von timelocal abgefangen, wenn ein ungültiges Datum übergeben wird!?
Bei mir (Perl v5.8.6 Build 811 Activestate; Win XPpro) lief das jedenfallls wie gepostet ohne Fehler/Warnung durch.
Ich poste keinen ungetesteten Code mit "use strict; use warnings;".
I sense a soul in search of answers.
pq
 2005-03-16 11:02
#52641 #52641
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=jan10001,15.03.2005, 23:47]@ptk
Ja er funktioniert hat er, nur war alles ungültig. Oder ist das ein falscher Syntax?
Code: (dl )
1
2
3
if (check_date($year,$month,$day)) {
.....
}
[/quote]
Wiki:schau mal hier
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
jan10001
 2005-03-16 14:33
#52642 #52642
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Die Lösung meiner Probleme. :)

Ich habe einen einfachen Code geschrieben und dabei festgestellt das mit check_date auf dem Testserver alles was eingeben wird falsch ist während auf dem Webserver alles funktionierte. Bei Spielereien mit Time::Local gabs auch öfters Fehler. Anscheind ist die Perl Installation beschädigt wurden (könnte beim letzten Stromausfall pasiert sein) nachdem ich Perl neu installiert habe läuft der Code. Am besten werde ich den Server komplett neu aufsetzen, wer weiß was sonst noch hin ist.
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-03-14 01:51.