Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 日历日期返回-1天,有什么问题,替代解决方案?_Php_Date_Calendar - Fatal编程技术网

Php 日历日期返回-1天,有什么问题,替代解决方案?

Php 日历日期返回-1天,有什么问题,替代解决方案?,php,date,calendar,Php,Date,Calendar,我试图回到日历上的某一天——我做错了什么 我的方法: $weekdays=数组('Mon','Tue','Wed','Thu','Fri','Sat','Sun'); /////// 函数getDates($year){ $dates=array(); 日期(“L”,mktime(0,0,0,7,7,$year))?$days=366:$days=365; /// 对于($i=1;$i$weeks){ 回声'; 回声'; 回音“.$year.”.$month.”; 回声'; 回声“W”; 回声“

我试图回到日历上的某一天——我做错了什么

我的方法:

$weekdays=数组('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
///////
函数getDates($year){
$dates=array();
日期(“L”,mktime(0,0,0,7,7,$year))?$days=366:$days=365;
///
对于($i=1;$i$weeks){
回声';
回声';
回音“.$year.”.$month.”;
回声';
回声“W”;
回声“”。内爆(“”,$weekdays)。“”;
回声';
回声';
foreach($周为$周=>$天){
回显'.$countW++.';
foreach($day为工作日){
回声';
/*我在这里不知所措*/
echo isset($days[$day])?$days[$day]:日期('d',strottime('-1天));//输出为5
回声';
}
回声';
}
回声';
回声';
}
我尝试了以下代码:

  • date('d',strotime('-1天))//输出:5(今天是6)
  • $jd=gregoriantojd(01,062020);echo jddayofweek($jd,2);//输出:周一(今天是周二)
通过这个代码,我得到了前一天的前一天。 预计在指定日期的前一天

发生了什么事

是预期的

使用此代码,我可以从当前的前一天获得日期。它应该是指定的前一天

此处“指定”的日期为当前日期

一般来说,(美国)月历会在日期不在月份时留下空白。例如:


这将是一个超级简单的问题解决方案。如果不是,你需要调整你的思维(和代码!)。在1月的第一周,周一和周二的日期是从1月的第一天开始的-2和-1。同样,在最后一周,从2月的第一天开始的日期是-2和-1(或者从1月的最后一天开始的日期是+1和+2).

你为什么要使用mktime?@Dharman我使用mktime好几次!哪一次?所有的。为什么要使用这个古老的函数?你有什么样的用例来代替DateTime类?@Dharman我不知道如何更好地解决这个问题。我很确定GitHub上有完整的日历库。我理解自己制作它的乐趣,但在在某些情况下,最好使用现有的