一周的第一天PHP IntlDateFormatter

时间:2018-01-15 15:11:54

标签: php internationalization

我正在尝试使用IntlDateFormatter类(在后台使用ICU)获得一周中的“正确”日。

代码解释了问题

<?php
$timezone = new \DateTimeZone('Europe/Amsterdam');
$date = new \DateTime('2018-01-15', $timezone);
$formatter = new \IntlDateFormatter('nl_NL', null, null);

// This prints "Monday" which is corrent
echo $formatter->formatObject($date, 'EEEE');

// This prints "2", which is incorrect
echo $formatter->formatObject($date, 'e');

根据ICU documentation,这应该打印“1”。该示例显示“星期二”的“2”

在询问IntlDateCalendar时,我的系统将星期“2”(即星期一)显示为一周的第一天。所以IntlDateFormatter应该在今天,星期一,作为一周的第一天。

使用“EEEE”或“eeee”作为输入没有区别。其他时区/区域设置不会改变结果。

1 个答案:

答案 0 :(得分:0)

以下代码对我有用,虽然我从周日开始这一周,你可以玩它:

$day = date('w'); $week_start = date('d F Y', strtotime('-'.$day.' days'));

然后我把它放在这样的标题中:<h4>Schedule for the week beginning SUN <?=$week_start?></h4>

结果:Click link to see a picture of the result.

另外,请查看PHP文档:http://php.net/manual/en/function.strtotime.phphttp://php.net/manual/en/function.date.php 或者:https://www.w3schools.com/php/func_date_date.asp

希望这有帮助!