如何强制Time::Piece->strftime
按照特定的语言环境输出星期和月份名称,而不是按照当前语言环境输出?
将$ENV{LC_ALL}
设置为特定的语言环境(例如C.UTF-8
)似乎并不起作用。
以下测试脚本:
#!/usr/bin/env perl
$ENV{LC_ALL} = "C.UTF-8";
use strict;
use warnings;
use Time::Piece;
my $s1 = "Mon, 26 Sep 2022";
my $format = "%a, %d %b %Y";
my $d = Time::Piece->strptime($s1, $format);
my $s2 = $d->strftime($format);
if ($s1 eq $s2) {
print("OK: '$s1' == '$s2'\n");
} else {
die("ERROR: '$s1' != '$s2'\n");
}
例如在 fr_CH.UTF-8
环境下运行时会失败:
$ LC_ALL=fr_CH.UTF-8 ./test-strftime.pl
ERROR: 'Mon, 26 Sep 2022' != 'lun, 26 sep 2022'