我以爲它會像$ENV{TZ}
一樣簡單,但是沒有設置TZ
環境變量,但date
命令仍然知道我在EDT,所以必須有其他方式來確定時區(除了說chomp(my $tz = qx/date +%Z/);
) 。如何確定機器設置爲使用Perl的當前時區?
7
A
回答
14
use POSIX;
print strftime("%Z", localtime()), "\n";
+0
我曾想過%Z,但我記得它在某些系統上不工作。 – 2009-06-13 03:24:30
+0
根據man strftime,%Z是標準規範,應該在所有平臺上支持。 – 2009-06-13 03:35:15
5
use POSIX;
localtime();
my ($std, $dst) = POSIX::tzname();
tzname()
,您可以訪問到POSIX全球tzname
- 但你需要呼籲localtime()
爲它擺在首位設置。
6
如果你想要的東西比POSIX
更便攜(但可能慢得多),你可以使用的DateTime :: TimeZone的這個:
use DateTime::TimeZone;
print DateTime::TimeZone->new(name => 'local')->name();
1
這也許更快:
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
0
如果你只需要類似+05:30
(UTC + 5.5 /印度時間),您可以使用以下代碼。
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);
此答案受Pavel上述答案的啓發。
相關問題
- 1. Perl中當前機器的主機名
- 2. 的Rails 3:設置時區,以當前用戶的時區
- 3. 將應用的時區設置爲當前用戶的時區 - Time.zone vs Time.use_zone
- 4. PHP:使用時區獲取當前區域設置
- 5. 如何使用C#中的當前位置自動設置時區
- 6. 如何讓Django爲我的系統區域設置使用正確的當前時間?
- 7. 確定當前的AUTOCOMMIT DDL設置
- 8. 如何使用nodejs獲取特定時區的當前小時?
- 9. 如何使用jQuery獲取給定時區的當前時間
- 10. 如何確定時區中的文化/區域設置
- 11. 如何手動確定當前操作系統的CodePage和區域設置
- 12. 如何爲WebPartManager設置當前用戶?
- 13. 如何列出Perl cpan使用的配置變量的當前設置?
- 14. 如何使用當前區域設置打印日期?
- 15. 如何讀取當前機器的NTFS設置?
- 16. 提升:從機器獲取與當前時區當前LOCAL_DATE_TIME
- 17. getSpeechRate()? (或如何確定TTS當前設置的比率)
- 18. 如何使用libusb確定當前活動的USB配置0.1
- 19. 如何正確設置我的當前nodejs express設置的301重定向?
- 20. 如何確定當前的Windows定時器分辨率?
- 21. 如何正確設置mysql時區
- 22. 設置定時觸發器的時區
- 23. 如何檢查當前區域設置是使用AM/PM還是24小時?
- 24. 設置當前時區到時區@JsonFormat值
- 25. 如何確定當前光標位置的活動監視器
- 26. 如何設置datetimepicker()當前時間?
- 27. 定義當前系統區域設置是否爲RTL或LTR
- 28. 如何爲當前模塊設置LogPipelineExecutionDetails?
- 29. 如何確定當前行?
- 30. 獲取ICU的當前區域設置
只需要額外的信息,在我的系統中,時區由文件/ etc/localtime調節,libc似乎知道如何使用它。 – 2009-06-13 06:51:04