如何使用 PHP 获取荷兰语的最后 7 天

How can I get the last seven days in dutch language using PHP

我正在尝试用荷兰语获取一周的最后 7 天。自己获取最后 7 天是没有问题的,我是这样做的:

function getLastNDays($days, $format = 'd/m'){
    $m = date("m"); $de= date("d"); $y= date("Y");
    $dateArray = array();
    for($i=0; $i<=$days-1; $i++){
        $dateArray[] = '' . date($format, mktime(0,0,0,$m,($de-$i),$y)) . '';
    }
    return array_reverse($dateArray);
}

$arr = getLastNDays(7, 'Y-m-d');

当我遍历 $arr 并将结果放入 $day 时,每个 $day 看起来像这样:

2019-09-19
2019-09-20
2019-09-21
2019-09-22
2019-09-23
2019-09-24
2019-09-25

所以为了得到它的缩写版本,在我的循环中我这样做:

$date = DateTime::createFromFormat("Y-m-d", $day);
$dag = $date->format("D");

这给了我:

Thu
Fri
Sat
Sun
Mon
Tue
Wed

现在要将其翻译成荷兰语,我发现我可以先使用 setlocale,然后再使用 strftime,所以现在我的整个代码如下所示:

function getLastNDays($days, $format = 'd/m'){
    $m = date("m"); $de= date("d"); $y= date("Y");
    $dateArray = array();
    for($i=0; $i<=$days-1; $i++){
        $dateArray[] = '' . date($format, mktime(0,0,0,$m,($de-$i),$y)) . '';
    }
    return array_reverse($dateArray);
}

$arr = getLastNDays(7, 'Y-m-d');
foreach($arr as $day) {
    $date = DateTime::createFromFormat("Y-m-d", $day);
    $dag = $date->format("D");
    setlocale(LC_TIME, 'nl_NL');
    $dagnl = strftime('%a', $date);
    echo $dagnl . "<br>";
}

但这只给了我 7 个空行(因为
被回显了)。为什么它不起作用?

虽然这不使用 PHP 库,但它是一种解决方法。

你可以试试

$weekday_dutch = array(
    "Sun" => "Zondag",
    "Mon" => "Maandag",
    "Tue" => "Dinsdag",
    "Wed" => "Woensdag",
    "Thu" => "Donderdag",
    "Fri" => "Vrijdag",
    "Sat" => "Zaterdag",
);

只需使用英文名称将其转换为荷兰语

$weekday_dutch["Sun"]

您必须将时间戳传递给 strftime,而不是日期:

$dagnl = strftime('%a', $date->getTimestamp());

输出:

do

vr

za

zo

ma

di

wo

您将 DateTime 对象而不是整数传递给 strftime

$dagnl = strftime('%a', $date);

但为什么这么复杂!只需 2 行代码即可获取最近 7 天的数据:

<?php 
setlocale(LC_TIME, 'nl_NL');

for($i=7;$i>0;$i--)
    echo strftime('%a', strtotime("-{$i} days")) . "<br>";

输出:

wo
do
vr
za
zo
ma
di