【问题标题】:Perl - Convert date from YEAR-MM-DD to MONTH, DD, YEAR [duplicate]Perl - 将日期从 YEAR-MM-DD 转换为 MONTH、DD、YEAR [重复]
【发布时间】:2014-11-26 20:34:34
【问题描述】:

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

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

【问题讨论】:

标签: mysql sql perl date


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

    如果您可以使用 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 命名空间。

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多