如何使用 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
我正在尝试用荷兰语获取一周的最后 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