为什么格式化日期会返回错误的年份?

时间:2016-01-09 09:18:53

标签: cakephp cakephp-3.0 date-formatting

我想在我的页面上打印格式化的日期。我有一个对象日期,我使用$ 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->格式($ date,' YYYY'))

'2016'

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

'2016'

感谢您的帮助

2 个答案:

答案 0 :(得分:13)

i18n日期使用IntlDateFormatter格式化,YYYY使用ISO日期格式模式,其中2016并不仅仅意味着全年,而是整周-numbering year ,将返回2015-12-30,因为当天2016跨越到明年,或更具体地说,因为那一周包括1月1日仍然是工作日(星期一到星期五),根据ISO周规则,它被视为yyyy的第一周。

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

您希望使用{{1}}代替,这将返回常规日历年。

答案 1 :(得分:2)

尝试将日期格式指定为var items = []; var itemCount = results.data.length; $.each(results.data, function(index) { var item = results.data[index]; item.index = index; geocoder.geocode({ 'address': address }, function(results, status) { item.lat = results[0].geometry.location.lat(); item.lng = results[0].geometry.location.lng(); items.push(item); console.log(items[0]); // --> prints object with all properties if (items.length === itemCount) { console.log(items); // --> prints 3 empty objects } }); } 。案件很重要。

'yyyy'