2014-10-01 57 views
0

我從格式爲YEAR-MM-DD的格式的數據庫中拉取字符串,即2013-2-24,並需要將其打印在網頁中Month, DD, YEAR即2013年2月24日的格式Perl - 將日期從YEAR-MM-DD轉換爲MONTH,DD,YEAR

我必須使用perl來做到這一點,但對語言來說是新的。 到目前爲止,我已經想通,我需要月份數字轉換成字符串是這樣的:

my @months = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") 

,並從數據庫中提取數據:

{Table}->get('date') 

但我不知道如何把這一切放在一起,任何幫助表示讚賞。

我已經得到了這個:但它似乎並沒有工作。

use Date::Format; 
@date = {Table}->get('date') 
$date->time2str("%B %d %Y", @date); 
print date; 

也許這是因爲它在數據庫中的格式失敗? yyyy-mm-dd,會破折使它失敗?我是否需要首先將其轉換爲數字?

+0

只是使用'DATE_FORMAT從數據庫中拉()'得到它在你想要的格式。 「 – 2014-10-01 21:31:29

+0

」2013年2月24日「在語法上不太正確... – 2014-10-01 21:33:35

+0

另請參閱http://stackoverflow.com/questions/8675706/how-can-i-change-the-date-formats-in-perl – 2014-10-01 21:34:33

回答

1

如果您可以使用CPAN的DateTime::Format::MySQL模塊,您的生活將變得更加輕鬆,因爲它定製完全符合您的要求。

use DateTime::Format::MySQL; 
my $date_from_database_table = '2013-2-24'; 
my $dt = DateTime::Format::MySQL->parse_datetime($date_from_database_table); 
print join(',', $dt->month_name(), $dt->day, $dt->year) ."\n"; 

由於您是Perl新手,您應該查看Task::Kensho模塊列表。它會告訴你Perl社區爲解決某個問題而推薦的模塊。你會發現Date::Format已經不再支持DateTime模塊,並且在DateTime中,你會發現它本身不解析日期,但確實有一大堆模塊在DateTime::Format命名空間下格式化日期。

2

使用Time::Piece

use strict; 
use warnings; 

use Time::Piece; 

my $date = '2013-2-24'; 

print Time::Piece->strptime($date, '%Y-%m-%d')->strftime("%B %d, %Y"), "\n"; 

輸出:

February 24, 2013 
相關問題