计算本周星期一的日期

3

目标:如果当前日期不是星期一,则显示本周星期一的日期。如果当前日期是星期一,则只显示今天的日期。

** 这是我写的代码,我认为它可以工作,但可能不是最简洁的确定日期的方式。话虽如此,有人看到代码有问题或无法正常工作吗? **

<?php
date_default_timezone_set("America/New_York");
$day = date("w");
if( $day == 1 ) {$day -= 0;}
if( $day == 2 ) {$day -= 1;}
if( $day == 3 ) {$day -= 2;}
if( $day == 4 ) {$day -= 3;}
if( $day == 5 ) {$day -= 4;}
if( $day == 6 ) {$day -= 5;}
if( $day == 0 ) {$day -= 6;}
$calc = mktime(0,0,0,date("m"),date("d")-$day,date("Y"));
echo date("m/d/Y",$calc)."<br>";
echo "start date of work week is: ".date("m/d/Y", $calc);
?>

https://dev59.com/oHI-5IYBdhLWcg3wW2-p#17081175 - vascowhite
4个回答

15

这个行不行?

echo date("d m Y",strtotime('monday this week'));

4
'Monday this week' also works in the DateTime constructor if you want something more modern than strtotime() - Phil
1
关闭,用那种方式做会回显下周一而不是本周的星期一。然而,我能够查看strtotime()方法,并通过使用$test=strtotime("previous monday",strtotime(date("m/d/Y"))); echo "<br>".date("m/d/Y",$test);得到正确的日期。 - DMSJax
1
@mithunsatheesh 这在我的情况下提供了错误的信息。如果日期是2015年1月1日,则它将提供2015年1月2日作为当前月份的星期一,而应从星期一开始计算一周。有没有一种方法可以从星期一开始计算当前周,而不是从星期日开始? - RN Kushwaha
1
@RNKushwaha - 这是基于“一周从星期日开始”的工作方式。您可以在文档中阅读相关线程。 - Mithun Satheesh

0

如果你的一周从星期一开始,以下内容适用。

$monday = strtotime('this sunday', strtotime($startingDate)) - (86400 * 6);

如果你的一周是从星期日开始,那么按照@mithunsatheesh建议的方法可以完美解决问题。


0
你可以尝试这个:

date_default_timezone_set("Asia/Kolkata"); $day = date("w")."<br>"; echo $day; //if( $day == 1 ) {$day = 0;} if( $day == 2 ) {$day -= 1;} if( $day == 3 ) {$day -= 1;} if( $day == 4 ) {$day -= 1;} if( $day == 5 ) {$day -= 1;} if( $day == 6 ) {$day -= 1;} if( $day == 0 ) {$day -= 6;} $calc = mktime(0,0,0,date("m"),date("d")-$day,date("Y")); if($day == 1 ){ echo date("m/d/Y")."<br>"; echo "工作周的开始日期是:".date("m/d/Y"); } else{ echo date("m/d/Y",$calc)."<br>"; echo "工作周的开始日期是:".date("m/d/Y", $calc); }

0
$time = strtotime('monday this week');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接