给定一个Perl DateTime对象,如何输出“当月的第1,第2,第3,第4”

时间:2014-06-19 08:58:19

标签: perl datetime formatting

我找不到正确输出当月日期的DateTime::Format::模块。 例如使用DateTime->strftime而不是输出“7月19日”,我想输出“7月19日”。

DateTime::Format::Natural::Lang::EN 解析这样的日期,但我需要相反的 - 输出格式化程序。

我不想使用Date :: Calc或任何其他日期模块(但会考虑非日期模块),我不想自己编写。

供参考:DateTime docs,其中strftime patterns似乎不包括“第1,第2,第3,第4”等。

1 个答案:

答案 0 :(得分:3)

也许你可以编写某种自定义格式化程序(然后将其发布到CPAN!)这会让你有一些方法......

package DateTime::Ordinated;

use strict;
use warnings;

use base 'DateTime';
use Lingua::EN::Numbers::Ordinate;

sub day {
  my $self = shift;

  my $day = $self->SUPER::day;

  return ordinate($day);
}

1;

要测试......

$ perl -MDateTime::Ordinated -E'$d=DateTime::Ordinated->now;say $d->day'
19th