Perl - 将日期从YEAR-MM-DD转换为MONTH,DD,YEAR

时间:2014-10-01 21:24:04

标签: mysql sql perl date

我从格式为YEAR-MM-DD的数据库中提取字符串,即2013-2-24,需要将其打印在Month, DD, YEAR格式的网页上,即2月24日,2013

我必须使用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,破灭会导致它失败吗?我需要先将它转换成数字吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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名称空间下格式化日期。