【问题标题】:Why does formatting a date return the wrong year?为什么格式化日期会返回错误的年份?
【发布时间】:2016-01-09 09:18:52
【问题描述】:

我想在我的页面上打印格式化的日期。我有一个对象日期,我使用 $this->Time->format() 进行格式化。 12 月 27 日之前一切正常。不幸的是,12 月 26 日之后的所有日期,格式都会更改我的年份编号。

这是我的调试($date)

object(Cake\I18n\Time) {

'time' => '2015-12-30T00:00:00+0000',
'timezone' => 'UTC',
'fixedNowTime' => false

}

这是我的调试($this->Time->format($date, 'YYYY'))

'2016'

我尝试使用 i18nFormat 但我遇到了同样的问题。这是我的调试($date->i18nFormat('YYYY'));

'2016'

感谢您的帮助

【问题讨论】:

    标签: cakephp cakephp-3.0 date-formatting


    【解决方案1】:

    i18n 日期使用 IntlDateFormatter 格式化,它使用 ISO 日期格式模式,其中 YYYY 不仅表示 全年,还表示 完整的周编号年份,它将返回 2016 因为一天中的一周 2015-12-30 跨越到下一年,或者更具体地说,因为那一周包括 1 月 1 日仍然是工作日(周一到周五),因此它被视为2016 的第一周根据 ISO 周规则。

    另请参阅https://en.wikipedia.org/wiki/ISO_8601#Week_dates

    您想改用yyyy,这将返回常规日历年。

    【讨论】:

    • 你打败了我 :)
    【解决方案2】:

    尝试将日期格式指定为'yyyy'。案件很重要。

    debug($this->Time->format($date, 'yyyy'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      相关资源
      最近更新 更多