当前位置: 首页 > 知识库问答 >
问题:

php获取特定于语言环境的日期格式

岑经纶
2023-03-14

确定当前给定区域设置的短日期格式的最佳方法是什么?

例如,如果我的脚本的语言环境设置为荷兰语,我希望以某种方式获得该特定语言环境中使用的短日期格式,它将是:

年月日

如果设置为American,我希望获得美国地区的日期格式:

年月日

等等

共有1个答案

笪建章
2023-03-14

您可以使用Intl PHP扩展根据所选区域设置日期格式:

$locale = 'nl_NL';

$dateObj = new DateTime;
$formatter = new IntlDateFormatter($locale, 
                        IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);

echo $formatter->format($dateObj);

如果您只是尝试获取用于格式化日期的模式,那么您需要的是IntlDateFormatter::getPattern

手册中的示例

$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'pattern of the formatter is : ' . $fmt->getPattern();
echo 'First Formatted output is ' . $fmt->format(0);
$fmt->setPattern('yyyymmdd hh:mm:ss z');
echo 'Now pattern of the formatter is : ' . $fmt->getPattern();
echo 'Second Formatted output is ' . $fmt->format(0);

这将输出:

pattern of the formatter is : MM/dd/yyyy
First Formatted output is 12/31/1969
Now pattern of the formatter is : yyyymmdd hh:mm:ss z
Second Formatted output is 19690031 04:00:00 PST
 类似资料:
  • 问题内容: 我是Java和Android开发的新手,所以这可能是一个愚蠢的问题,但是我已经搜寻了好几天,却找不到解决方案: 我尝试根据用户的语言环境输出a 。 在StackOverflow上搜索使我想到了这一点: 输出: 在我的法语本地电话上。差不多了 我如何也输出 小时,分钟和秒部分 的,使用用户的语言环境?我一直在寻找android文档,但找不到任何东西。 非常感谢。 问题答案: 用 参考:h

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以

  • 我在我的应用程序中使用日期格式化程序来显示一些日期。但我希望这个日期以阿拉伯语显示。所以我试图像这样改变格式化程序的区域设置: 但它不起作用。。 如果我改成这样: 会工作正常...但我希望日期显示在阿拉伯语... 如何做到这一点?我希望日期是例如١١ يناير ٢٠١٨..怎么办?

  • 问题内容: 我遇到了一个非常奇怪的问题,听起来像是系统错误。我只想使用小时和分钟信息来格式化日期,并在必要时显示AM / PM。 这是我的代码: 如您所见,我正在使用而不使用,并且如Apple文档所述,如果用户选择12h格式,它应该自动添加AM / PM: 时间的表示可能是13:00。但是,在iOS中,如果用户将24小时制切换为关闭,则时间可能是1:00 pm。 我发现它可以在我的设备(我位于欧洲

  • 问题内容: 我住在比利时。通常,在数学中,我们用这样的逗号来写小数:3,141592 这也是 格式化 浮点数时的结果。 因此,通过替换像这样:。因此,总是在需要一个点时,我必须添加以下内容: 因此,问题是:有没有一种方法可以更改语言环境,从而使Java中的每个格式化程序都使用点而不是逗号? 谢谢 版画 问题答案: 尝试仅用于设置格式化期间使用的语言环境。

  • 我用的是Symfony2.0.0我没有机会更新Symfony这是我的security.yml 我如何为我的failure_path使用区域设置。尝试使用/%locaale%/failure_path但它总是返回en(我的默认语言环境)。它不理解路由名称。如果我使用路由的名称,例如login_fail它不起作用(像相对路径一样重定向)。 这是我的路线。 有办法修好它吗?