使用 PHP 检查 2 个给定日期是否为周末
Check if 2 given dates are a weekend using PHP
我有 2 个这样的日期 YYYY-mm-dd,我想检查这 2 个日期是否是周末。
我有这段代码,但它只测试了 1 个日期,我不知道如何调整它;我需要添加一个 $date_end
.
$date = '2011-01-01';
$timestamp = strtotime($date);
$weekday= date("l", $timestamp );
$normalized_weekday = strtolower($weekday);
echo $normalized_weekday ;
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) {
echo "true";
} else {
echo "false";
}
您可以使用 strtotime();和 date() 函数获取日期的日期,然后检查是否是 sat o sun
function check_if_weekend($date){
$timestamp = strtotime($date);
$day = date('D', $timestamp);
if(in_array($day, array('sun', 'sat'))
return true;
else return false;
}
您可以使用更短的代码来检查周末 => date('N', strtotime($date)) >= 6
。
因此,要检查 2 个日期——而不仅仅是 1 个——使用一个函数来保持代码简单和干净:
$date1 = '2011-01-01' ;
$date2 = '2017-05-26';
if ( check_if_weekend($date1) && check_if_weekend($date2) ) {
echo 'yes. both are weekends' ;
} else if ( check_if_weekend($date1) || check_if_weekend($date2) ) {
echo 'no. only one date is a weekend.' ;
} else {
echo 'no. neither are weekends.' ;
}
function check_if_weekend($date) {
return (date('N', strtotime($date)) >= 6);
}
使用稍长的现有代码,以下是检查 2 个日期的方法:
$date1 = '2011-01-01' ;
$date2 = '2017-05-27';
if ( check_if_weekend_long($date1) && check_if_weekend_long($date2) ) {
echo 'yes. both are weekends' ;
} else if ( check_if_weekend_long($date1) || check_if_weekend_long($date2) ) {
echo 'no. only one date is a weekend.' ;
} else {
echo 'no. neither are weekends.' ;
}
function check_if_weekend_long($date_str) {
$timestamp = strtotime($date_str);
$weekday= date("l", $timestamp );
$normalized_weekday = strtolower($weekday);
//echo $normalized_weekday ;
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) {
return true;
} else {
return false;
}
}
一些提示:
date('N')
为您提供可以测试的标准化工作日(无需使用本地化字符串)
- 将所有内容包装在 custom function 中,您就完成了
将多个答案合并为一个答案并多加一点,你会得到以下结果:
function isWeekend($date) {
return (new DateTime($date))->format("N") > 5 ? true : false;
}
或长途跋涉:
function isWeekend($date) {
if ((new DateTime($date))->format("N") > 5) {
return true;
}
return false;
}
我有 2 个这样的日期 YYYY-mm-dd,我想检查这 2 个日期是否是周末。
我有这段代码,但它只测试了 1 个日期,我不知道如何调整它;我需要添加一个 $date_end
.
$date = '2011-01-01';
$timestamp = strtotime($date);
$weekday= date("l", $timestamp );
$normalized_weekday = strtolower($weekday);
echo $normalized_weekday ;
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) {
echo "true";
} else {
echo "false";
}
您可以使用 strtotime();和 date() 函数获取日期的日期,然后检查是否是 sat o sun
function check_if_weekend($date){
$timestamp = strtotime($date);
$day = date('D', $timestamp);
if(in_array($day, array('sun', 'sat'))
return true;
else return false;
}
您可以使用更短的代码来检查周末 => date('N', strtotime($date)) >= 6
。
因此,要检查 2 个日期——而不仅仅是 1 个——使用一个函数来保持代码简单和干净:
$date1 = '2011-01-01' ;
$date2 = '2017-05-26';
if ( check_if_weekend($date1) && check_if_weekend($date2) ) {
echo 'yes. both are weekends' ;
} else if ( check_if_weekend($date1) || check_if_weekend($date2) ) {
echo 'no. only one date is a weekend.' ;
} else {
echo 'no. neither are weekends.' ;
}
function check_if_weekend($date) {
return (date('N', strtotime($date)) >= 6);
}
使用稍长的现有代码,以下是检查 2 个日期的方法:
$date1 = '2011-01-01' ;
$date2 = '2017-05-27';
if ( check_if_weekend_long($date1) && check_if_weekend_long($date2) ) {
echo 'yes. both are weekends' ;
} else if ( check_if_weekend_long($date1) || check_if_weekend_long($date2) ) {
echo 'no. only one date is a weekend.' ;
} else {
echo 'no. neither are weekends.' ;
}
function check_if_weekend_long($date_str) {
$timestamp = strtotime($date_str);
$weekday= date("l", $timestamp );
$normalized_weekday = strtolower($weekday);
//echo $normalized_weekday ;
if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) {
return true;
} else {
return false;
}
}
一些提示:
date('N')
为您提供可以测试的标准化工作日(无需使用本地化字符串)- 将所有内容包装在 custom function 中,您就完成了
将多个答案合并为一个答案并多加一点,你会得到以下结果:
function isWeekend($date) {
return (new DateTime($date))->format("N") > 5 ? true : false;
}
或长途跋涉:
function isWeekend($date) {
if ((new DateTime($date))->format("N") > 5) {
return true;
}
return false;
}