Frage

Zuvor diese Funktion arbeitet für mich ...

$this_day = Day_of_Week($lyear, $month, $day);

mit dieser lib ..

use Date::Calc qw(Add_Delta_Days Day_of_Week Delta_Days);

Aber ich brauche einen anderen Weg, um diese gleichen Informationen zu erhalten.

die Fehler es zurückgegeben wird,

Date::Calc::Day_of_Week(): not a valid date

Irgendwelche Ideen?

War es hilfreich?

Lösung

Die Fehlermeldung sagt Sie vorbei Date :: Calc ein ungültiges Datum. Tun Sie das nicht. Sie können Datum verwenden :: Calc check_date Funktion, um zu entscheiden, ob das Datum gültig ist.

use Date::Calc qw(Add_Delta_Days check_date Day_of_Week Delta_Days);

$this_day = (check_date($lyear, $month, $day)
             ? Day_of_Week($lyear, $month, $day)
             : 'INVALID');

ungültiges Datums Korrektur ist komplizierter, weil es hängt davon ab, wie Sie ungültige Datumsangaben sind immer, und was wollen Sie über sie tun. Zum Beispiel könnte, wenn der Tag außer Reichweite sein, und Sie wollten April korrigieren 31 bis 1. Mai könnten Sie

($lyear, $month, $day) = Add_Delta_Days($lyear, $month, 1,  $day-1);

Aber das wird ein ungültiges Jahr oder Monat nicht korrigieren.

Andere Tipps

use Posix qw(mktime);
my $epoch = mktime(sec, min, hour, mday, mon, year);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoch);

Es ist ein wenig barock, aber ich habe immer Datum mag :: Manip.

Ich glaube nicht eine alternative Methode ist, was Sie brauchen, though. Wahrscheinlicher ist, müssen Sie Date :: Calc falsche Daten stoppen Fütterung.

Welche Werte ist es erroring auf?

könnten Sie Datum :: Einfach .

use Date::Simple (':all');
my $date = ymd($year, $month, $day);
my $dow = $date->day_of_week();

Als Alternative zu heeen Antwort, können Sie strftime verwenden:

use Posix qw(strftime);
my $wday = strftime('%w', sec, min, hour, mday, mon, year); # 0 = Sunday, 1 = Monday, etc...
my $day_name = strftime('%a', sec, min, hour, mday, mon, year); # Sun, Mon, etc...
my $day_name_long = strftime('%A', sec, min, hour, mday, mon, year); # Sunday, Monday, etc...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top