Avevo pensato che fosse semplice come $ENV{TZ}
, ma la variabile di ambiente TZ
non è impostata, eppure il comando date
sa ancora che sono in EDT, quindi ci deve essere un altro modo per determinare il fuso orario (oltre a dire chomp(my $tz = qx/date +%Z/);
) .Come determinare il fuso orario corrente su cui è impostata la macchina con Perl?
risposta
use POSIX;
print strftime("%Z", localtime()), "\n";
Ho pensato a% Z, ma ricordo che qualcosa non funzionava su alcuni sistemi. –
Secondo lo strftime man,% Z è una specifica standard e dovrebbe essere supportata su tutte le piattaforme. –
Penso che stavo ricordando questo dai documenti POSIX: L'identificatore "Z" è notoriamente non portabile dato che i nomi dei fusi orari non sono standard. Attenersi agli specificatori numerici è la via più sicura. Ma penso che questo sia probabilmente abbastanza sicuro per i miei scopi. –
use POSIX;
localtime();
my ($std, $dst) = POSIX::tzname();
tzname()
dà accesso al POSIX globale tzname
- ma è necessario aver chiamato localtime()
per poter essere impostato in primo luogo.
Se volete qualcosa di più portabile di POSIX
(ma probabilmente molto più lento) è possibile utilizzare DateTime :: fuso orario per questo:
use DateTime::TimeZone;
print DateTime::TimeZone->new(name => 'local')->name();
Forse questo più veloce:
my @lt = localtime(12*60*60);
my @gt = gmtime(12*60*60);
$tz = @lt[2] - @gt[2];
$tz_ = sprintf("%+03d:00", $tz); # for +02:00 format
Per completare la risposta è possibile utilizzare il pulsante [modifica] (http://stackoverflow.com/posts/29400576/edit). – ZygD
Se avete solo bisogno qualcosa come +05:30
(UTC + 5.5/India time), è possibile utilizzare il seguente codice.
my @lt = localtime();
my @gt = gmtime();
my $hour_diff = $lt[2] - $gt[2];
my $min_diff = $lt[1] - $gt[1];
my $total_diff = $hour_diff * 60 + $min_diff;
my $hour = int($total_diff/60);
my $min = abs($total_diff - $hour * 60);
print sprintf("%+03d:%02d", $hour, $min);
Questa risposta è ispirata dalla risposta di Pavel sopra.
- 1. con Python, qual è il modo più accurato per determinare automaticamente un utente fuso orario corrente
- 2. Powershell Visualizza l'ora corrente con fuso orario
- 3. Imposta il fuso orario corrente in Rails?
- 4. Fuso orario con PostgreSQL
- 5. strptime con fuso orario
- 6. Java GregorianCalendar Fuso orario
- 7. Come ottenere il fuso orario dell'utente corrente in C#
- 8. regolare il fuso orario
- 9. Come posso determinare un fuso orario in base all'offset UTC?
- 10. Come definire il fuso orario corrente in Azure ML per la funzione strptime, fuso orario sconosciuto 'localtime'
- 11. Formato stringa su datetime con fuso orario
- 12. Come impostare correttamente il fuso orario mysql
- 13. Formato Android con fuso orario
- 14. Come posso determinare il motivo per cui la macchina è uscita dalla sospensione?
- 15. timestamp con la mappatura PostgreSQL fuso orario
- 16. Ottiene il fuso orario con React Native
- 17. Ricevi la data corrente, dato un fuso orario in PHP?
- 18. Convertire fuso orario locale a PST fuso orario in C#
- 19. come ottenere l'oggetto tz_info corrispondente al fuso orario corrente?
- 20. javascript Data fuso orario
- 21. Come si stampa elegantemente il formato% z (fuso orario) in Perl su Windows?
- 22. Come ottenere il fuso orario del cliente?
- 23. Strano comportamento con fuso orario
- 24. Data PostgreSQL() con fuso orario
- 25. Impostare il fuso orario del database MySQL su GMT
- 26. Come si ottiene lo scostamento UTC corrente (fuso orario)?
- 27. Come ottenere il fuso orario dell'utente?
- 28. come rilevare il fuso orario del client?
- 29. Qual è il fuso orario predefinito in java.util.Date
- 30. Come determinare la lingua di input corrente?
Solo per informazioni extra, sul mio sistema, il fuso orario è regolato dal file/etc/localtime e libc sembra sapere come usarlo. –