我已經做了一些搜索,我不知道如何使用核心Perl模塊正確地轉換它。我有2013-10-22T19:31:00Z
,想要獲得10/22/2013和美國中部時間。如何正確轉換日期時間和時區?
回答
標準Perl模塊?
這將包括從5.10開始已經成爲Perl的一部分的Time::Piece。
#! /usr/bin/env perl
use strict;
use warnings;
use feature qw(say);
use Time::Piece;
my $date = "2013-10-22T19:31:00Z";
my $time = Time::Piece->strptime ($date, "%Y-%m-%dT%H:%M:%SZ");
$time = localtime($time); # Converts time to local time
say $time->mdy("/");
此打印出:
10/22/2013
那古怪"%Y-%m-%dT%H:%M:%SZ"
字符串代表你的時間輸入格式。您可以在strftime的管理中找到它。
%Y
:四位數表示的年份%m
:月從01 - 12%d
:日從01 - 31%H
:小時,從00 - 23%M
:從00分鐘 - 59%S
:第二個從00到59
這不會轉換爲中央時間 – ikegami
我已經添加了一個'localtime'函數。這會將'$ time'對象轉換爲本地時間而不是GMT。如果您當地的時間是中央時間,這將起作用。也許真正的答案是使用[Slaven's](http://stackoverflow.com/a/19528445/368630)設置'$ ENV {TZ}變量並運行'tzset'的技巧。 –
use DateTime::Format::RFC3339 qw();
use DateTime::Format::Strptime qw();
my $in_dt_format = DateTime::Format::RFC3339->new();
my $out_dt_format = DateTime::Format::Strptime->new(
pattern => '%m/%d/%Y %H:%M:%S',
on_error => 'croak',
);
my $dt = $in_dt_format->parse_datetime('2013-10-22T19:31:00Z');
$dt->set_time_zone('America/Chicago');
say $out_dt_format->format_datetime($dt); # 10/22/2013 14:31:00
這裏只用核心模塊的解決方案(當然,你需要有至少Perl的5.8):
use strict;
use POSIX qw(tzset strftime);
use Time::Local qw(timegm);
my $iso_time = "2013-10-22T19:31:00Z";
my $formatted_time;
{
local $ENV{TZ} = "America/Chicago";
tzset;
if (my($y,$m,$d,$H,$M,$S) = $iso_time =~ m{^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$}) {
$formatted_time = strftime '%m/%d/%Y %H:%M:%S', localtime timegm $S,$M,$H,$d,$m-1,$y;
} else {
# invalid ISO date, do something
}
}
tzset; # restore default time zone handling
warn $formatted_time, "\n"; # output is "10/22/2013 14:31:00"
有關TZ
招一個字:通過設置環境變量TZ
一些時間相關的libc函數(例如localtime
)使用該時區而不是默認時區。如果在程序中設置了TZ
環境變量,則必須調用tzset()
來調整與內部時間相關的數據結構。並且不要忘記再次調用tzset()
來重新恢復數據結構。
這應該適用於大多數Unix系統,但可能在Windows系統上運行,也可能不運行。
- 1. 如何長型時間值轉換爲日期時間與正確的時區
- 2. 大熊貓轉換日期時間與正確的時區
- 3. 轉換成正確的日期時間
- 4. PHP時區轉換/ PHP日期不顯示正確的時區
- 5. 如何日期和時間轉換爲用戶時區
- 6. 日期時間時區轉換錯誤
- 7. 日期和時間轉換
- 8. 如何轉換時間和日期
- 9. 轉換日期時間,使用時區有時UTC工作正確
- 10. 轉換日期時間到時區,設置時間和轉換回
- 11. 如何日期和時間轉換成日期時間/時間戳
- 12. [R日期和時間變換時區
- 13. 給定日期/時間和時區,如何將其轉換爲UTC時間戳?
- 14. 社區Sqlite不正確處理日期和日期時間
- 15. 如何在日期的正確對象中轉換時間戳?
- 16. 如何將時區日期轉換爲正確的當地日期?
- 17. 將日期和時間轉換爲GMT + 10日期和時間
- 18. 如何將IronPython日期時間轉換爲.NET日期時間?
- 19. 如何將UTC日期/時間轉換爲EST日期/時間
- 20. codeigniter日期和時間在視圖中不能正確轉換
- 21. 如何正確轉換日期時間字符串的utc時間位移?
- 22. 如何在android中轉換日期和時間,如時間軸?
- 23. 如何將日期時間轉換爲不同的時區?
- 24. 轉換UNIX時間正常的日期和時間C#
- 25. 在python中使用正確的日期轉換和計算日期時間物體的時區
- 26. 如何轉換CEST和UTC時區之間的日期時間對象
- 27. 時刻不轉換正確的日期
- 28. MomentJS時區返回的日期和時間不正確
- 29. 將日期和時間轉換爲日期+時間戳
- 30. 將時間和日期轉換爲mysql日期時間
對於使用核心模塊轉換日期/時間格式,請參閱[此SO問題](http://stackoverflow.com/questions/17037539/perl-convert-date-timezone-without-datetime-module)等。 – ThisSuitIsBlackNot
@ThisSuitIsBlack不,沒有足夠的信息來回答他在這個問題的答案中的問題。 – ikegami
@ikegami然而,有一個鏈接到Time :: Piece的文檔,這將是一個好的開始。 – ThisSuitIsBlackNot