使用IntlDateFormatter进行PHP日期格式化

时间:2015-03-06 08:48:37

标签: php date internationalization

我注意到,在使用PHP IntlDateFormatter格式化日期时,结果可能会因语言而异。例如:

$formatter = new IntlDateFormatter("en_GB",
                        IntlDateFormatter::SHORT, IntlDateFormatter::NONE,
                        "Europe/Vienna");

$date = $formatter->format(0);

在此示例中,$date将为31/12/1969,但如果我使用de_DE作为区域设置$date31.12.69。使用IntlDateFormatter::MEDIUM

时,差异会更大
  • 德语:31.12.1969
  • 英文:31 Dec 1969

有没有办法在不指定格式的情况下获得更多类似的结果?

1 个答案:

答案 0 :(得分:1)

正如ICU docs所说:

  
      
  1. SHORT是数字,例如12/13/52或3:30 pm
  2.   
  3. MEDIUM更长,例如1952年1月12日
  4.   
  5. LONG更长,例如1952年1月12日或下午3:30:32
  6.   
  7. 已完全指定,例如公元1952年4月12日星期二或太平洋标准时间下午3:30:42
  8.   

所以你可能会提出这样的问题:“谁定义了那些短/中等格式,谁来决定它的外观?”。

CLDR确认所有类似决定及其流程is described as

  

收到国家/地区和语言的数据后,数据来自   将比较不同的来源以显示协议和   差异。初始数据贡献通常标记为草案;   一旦数据被审查,这可能会改变。

     

请注意,存储库中有两种类型的数据:

     
      
  • 通用数据:内容由CLDR技术委员会根据其程序和流程决定。
  •   
  • 比较数据:贡献者可以是个人或组织。通常通过调用公共API来收集数据   确保数据与实际使用的数据相匹配。这些数据只是   为了比较,除非必要,否则不会更改   更新数据以匹配外部源。唯一的要求是   所有更改的数据都要进行版本控制,以及版本编号方案   使用。
  •   
     

鼓励贡献者使用当地语言和国家/地区   联系,在组织内外,以帮助审查当前   共同数据和任何增加或修改共同的新提案   数据。特别鼓励国家标准组织   参与数据审查过程。

可能并非总是(世界各地)中等格式看起来像:12, Jan 2015,并且决定是在国家层面做出的。如果您作为德国人对此有疑虑 - 您可以尝试fill a ticket with change proposal