Tôi đã giả sử nó sẽ đơn giản như $ENV{TZ}
, nhưng biến môi trường TZ
chưa được đặt, và lệnh date
vẫn biết tôi đang ở trong EDT, vì vậy phải có một số cách khác để xác định múi giờ (trừ nói chomp(my $tz = qx/date +%Z/);
) .Làm cách nào để xác định múi giờ hiện tại mà máy được đặt bằng Perl?
Trả lời
use POSIX;
print strftime("%Z", localtime()), "\n";
Tôi nghĩ về% Z, nhưng tôi nhớ một vài điều về nó không hoạt động trên một số hệ thống. –
Theo strftime người đàn ông,% Z là một đặc điểm kỹ thuật tiêu chuẩn và cần được hỗ trợ trên tất cả các nền tảng. –
Tôi nghĩ rằng tôi đã ghi nhớ điều này từ các tài liệu POSIX: Trình định danh "Z" nổi tiếng không đáng kể vì tên của múi giờ không chuẩn. Gắn bó với các số chỉ định là tuyến đường an toàn nhất. Nhưng tôi nghĩ điều này có lẽ đủ an toàn cho mục đích của tôi. –
use POSIX;
localtime();
my ($std, $dst) = POSIX::tzname();
tzname()
cung cấp cho bạn truy cập vào các POSIX toàn cầu tzname
- nhưng bạn cần phải đã kêu gọi localtime()
cho nó được đặt ở nơi đầu tiên.
Nếu bạn muốn một cái gì đó di động hơn POSIX
(nhưng có lẽ chậm hơn), bạn có thể sử dụng DateTime :: TimeZone cho việc này:
use DateTime::TimeZone;
print DateTime::TimeZone->new(name => 'local')->name();
Có lẽ đây nhanh hơn:
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
Để bổ sung cho câu trả lời của bạn, bạn có thể sử dụng nút [edit] (http://stackoverflow.com/posts/29400576/edit). – ZygD
Nếu bạn chỉ cần một cái gì đó như +05:30
(UTC + 5.5/Ấn Độ thời gian), bạn có thể sử dụng mã sau đây.
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);
Câu trả lời này được lấy cảm hứng từ câu trả lời của Pavel ở trên.
- 1. Cách đặt chính xác múi giờ mysql
- 2. Symfony2: Nơi đặt múi giờ do người dùng xác định
- 3. Sử dụng python, cách chính xác nhất để tự động xác định múi giờ hiện tại của người dùng
- 4. Tìm múi giờ từ mã sân bay bằng mã perl
- 5. Múi giờ bằng Python
- 6. H2 đặt múi giờ mặc định
- 7. tăng: lấy LOCAL_DATE_TIME hiện tại với múi giờ hiện tại từ máy
- 8. Làm cách nào để phân tích ngày và chuyển đổi múi giờ trong Perl?
- 9. Làm cách nào để có được tên múi giờ có thể đọc được bằng Python?
- 10. Cách đặt múi giờ JVM đúng
- 11. Làm thế nào để có được ngày hiện tại ở định dạng ISO bằng Perl?
- 12. postgres múi giờ mặc định
- 13. Làm cách nào để thay đổi múi giờ trong PHP cho dấu thời gian hiện tại?
- 14. Làm cách nào để quản lý múi giờ trong Sitecore?
- 15. Làm cách nào để kết hợp ngày và giờ nhận biết múi giờ bằng Python?
- 16. Làm thế nào tôi có thể chuyển đổi múi giờ của windows thành múi giờ mà pytz hiểu được?
- 17. Tôi làm cách nào để lấy giá trị UTC hiện tại (múi giờ)?
- 18. Làm cách nào để đặt múi giờ trong nguồn cấp dữ liệu iCal bằng DDay.iCal?
- 19. Cài đặt múi giờ oozie
- 20. cách đặt múi giờ mặc định trong yii?
- 21. Làm thế nào để có được múi giờ của người dùng bằng cách sử dụng jquery?
- 22. Xác định bù đắp múi giờ trong T-SQL
- 23. Làm thế nào để đối phó với múi giờ giữa máy chủ và máy khách?
- 24. Cách chỉ định múi giờ trong UIDatePicker
- 25. Làm cách nào để đặt Múi giờ cho mỗi chủ đề?
- 26. Lấy múi giờ hiện tại trong ứng dụng android
- 27. Cách tốt nhất để xử lý múi giờ bằng Javascript
- 28. Định dạng múi giờ datetime
- 29. Làm thế nào để làm múi giờ trong ASP.NET MVC?
- 30. iPhone: Tìm bù đắp múi giờ hiện tại trong HOURS
Chỉ để biết thêm thông tin, trên hệ thống của tôi, múi giờ được quy định bởi tệp/etc/localtime và libc xuất hiện để biết cách sử dụng. –