使用区域设置 - 问题

发布于 2024-10-21 21:05:49 字数 645 浏览 2 评论 0原文

当我将 locale 设置为 it_IT.UTF-8 (导出 LC_ALL=it_IT.UTF-8)并运行此脚本时,

#!/usr/bin/env perl
use warnings;
use 5.012;
use POSIX qw(strftime);

say strftime "%A %B %e %H:%M:%S %Y", localtime;

我得到以下输出:

martedì marzo 15 08:50:07 2011

但是阅读此内容(来自 < a href="http://perldoc.perl.org/perllocale.html#The-use-locale-pragma" rel="nofollow">The-use-locale-pragma ):

默认, Perl 忽略当前语言环境。 use locale pragma 告诉 Perl 使用当前区域设置进行某些操作: ... POSIX 日期格式化函数 (strftime()) 使用 LC_TIME 。

为什么我的区域设置在不使用 locale 编译指示的情况下会对 strftime 输出产生影响?

When I set my locale to it_IT.UTF-8 (export LC_ALL=it_IT.UTF-8) and run this script

#!/usr/bin/env perl
use warnings;
use 5.012;
use POSIX qw(strftime);

say strftime "%A %B %e %H:%M:%S %Y", localtime;

I get this output:

martedì marzo 15 08:50:07 2011

but reading this (from The-use-locale-pragma ):

By default, Perl ignores the current locale.
The use locale pragma tells Perl to use the current locale for some operations:
...
The POSIX date formatting function (strftime()) uses LC_TIME .

why does my locale-setting have an influence on the strftime-output without the use of the locale pragma?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半暖夏伤 2024-10-28 21:05:51

POSIX::strftimetime.h 中使用当前语言环境的真实 strftime C 函数调用的薄包装器。 Perl 并没有努力使其符合要求。

DateTime 有一个在 Perl 中实现的 strftime 等效项,它将符合 Perl 的语言环境编译指示。

POSIX::strftime is a thin wrapper around the real strftime C function call in time.h which uses the current locale. Perl doesn't go through the effort to make it conform.

DateTime has a strftime equivalent implemented in Perl that will conform to Perl's locale pragma.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文