2014-10-01 41 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 
相关问题