Perl Date::Manip - wie konvertiert ein gegebenes Datum in einer anderen Zeitzone
Betrachten Sie den folgenden Codeausschnitt, der nimmt die Eingaben des Benutzers (Datum) und formatieren Sie Sie mit UnixDate von Date::Manip
#!/usr/bin/perl
use Date::Manip;
my $input = join(" ", @ARGV);
my $date = UnixDate($input, "%Y-%m-%d %T");
print $date;
Dies wurde getan, um Benutzern zu erlauben, geben Sie freundlich, Termine wie "gestern" oder "1 Woche".
Möchte ich nutzen, $Datum mit einer anderen Zeitzone (Sie wird verwendet, um SQL-Daten). Wie würde das gemacht werden?
Ich habe keine gefunden Konstrukt UnixDate, die erlauben würde, um eine Zeitzone, und ich auch nicht weiß, wie formatieren der Benutzer-Eingang (Verkettung der Namen der Zeitzone an, es hilft nicht).
Beispiel
Der Benutzer irgendwo in zentral-Europa (Zeitzone: MEZ) und in den "heute um 1pm". Die Ausführung des Codes oben ist wie folgt:
$ ./test.pl today at 1pm
2011-03-03 13:00:00
Dies ist das erwartete Ergebnis, da keine Zeitzone ändern wirksam sind. Was ich möchte ist, zu verwenden, $Datum mit einer anderen Zeitzone, z.B. Pacific Standard (Zeitzone: PST). In diesem Fall sollte die Ausgabe:
$ ./test.pl today at 1pm
2011-03-03 04:00:00
InformationsquelleAutor emx | 2011-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen die
Date_ConvTZ()
Funktion:Aus der Anleitung von Date::Manip::DM6
InformationsquelleAutor ojosilva
Ich weiß nicht, wie man
Date::Manip
verstehen Zeitzonen, aber das wäre dann ziemlich straight-forward mitDateTime
:Könnten Sie in der Lage sein zu ersetzen, die Ihr
Date::Manip
verwendet, die mit einem oder mehreren der DateTime-Module auchDateTime
ist das standard-Datum-manipulation-Bibliothek für Perl, so verwenden Sie es für alle Ihre Datum-Zeit-Bedürfnisse Sinn macht; OTOH, verwenden Sie, was für Sie arbeitet und es wahrscheinlich nicht Schaden, mit beidenDate::Manip
undDateTime
wenn, bekommt den job getan.InformationsquelleAutor mu is too short