In Perl, come si analizzerebbe in modo efficiente l'output del comando data di unix, tenendo conto del fuso orario e convertendolo in UTC?Come posso convertire l'output di data unix su più fusi orari su UTC, in Perl?
Ho letto molte domande simili su StackOverflow, ma poche sembrano prendere in considerazione l'analisi di fusi orari multipli. Invece sembrano impostare manualmente il fuso orario e assumerlo per rimanere fisso.
# Example Input Strings:
my @inputs = (
'Tue Oct 12 06:31:48 EDT 2010',
'Tue Oct 12 07:49:54 BST 2010',
);
Ho provato quanto segue senza alcun risultato:
foreach my $input (@inputs) {
my $t = Time::Piece->strptime($input,
'%a %b %d %T %Z %Y');
print $t->cdate, "\n";
}
sembra che il problema è il fuso orario (% Z). Inoltre, un campo di fuso orario non sembra esistere in Time :: Piece, il che richiederebbe che io scriva codice personalizzato per convertire in UTC, il che sembra ... sbagliato.
Contesto: Sto tentando di analizzare i registri legacy da varie fonti che utilizzano il comando data di unix per i timestamp. Idealmente, mi piacerebbe convertire tutti i timestamp in UTC.
Qualsiasi aiuto sarebbe molto apprezzato.
Il problema fondamentale che si avrà qui è che le abbreviazioni del fuso orario di 3 lettere non sono uniche. Il significato di "EST" dipende dal paese in cui ti trovi. – cjm
Grazie per aver sottolineato l'ambiguità. Posso sostituire quello che so essere il nome lungo corretto (EST5EDT è corretto per quel registro). Tuttavia, non sono ancora sicuro di come catturare il fuso orario senza scrivere codice personalizzato per estrarre il fuso orario e quindi impostare manualmente il fuso orario nel mio modulo di scelta (DateTime sembra abbastanza bello), sperando che mappassi la stringa corretta. – vlee