以下是该问题的摘要:星期日,strtotime('this week')返回下周的开始.
在PHP中,本周似乎从星期一开始.但是,除了星期天之外的任何一天,这段代码
echo date('Y-m-d', strtotime('monday this week', strtotime('last sunday')));
Run Code Online (Sandbox Code Playgroud)
输出本周的星期一的日期,似乎它应该在周一的最后几周输出.看起来,在这种情况下,PHP将星期日和星期一视为本周的开始.现在是2012年12月10日星期一,或2012-12-10.date('Y-m-d', strtotime('sunday last week'))返回2012-12-09- 昨天.
这是一个错误,还是我错过了什么?看起来这个明显的臭虫应该是众所周知的,但我找不到任何关于它的东西.本周开始的唯一方法是在周日使用一些特殊处理方法吗?
$week_offset = (int) 'sunday' == date('l');
$week_start = strtotime("-$week_offset monday"); // 1 or 0 Mondays ago
Run Code Online (Sandbox Code Playgroud) 所以我有一个日期作为字符串:
2011/06/01
Run Code Online (Sandbox Code Playgroud)
我需要从中获取与该周的五个工作日(星期一到星期五)相对应的5个DateTime对象,例如,我需要2011-05-30到2011-06-03.
怎么做?我知道我能做到:
$dateTime = new DateTime('2011/06/01');
Run Code Online (Sandbox Code Playgroud)
但我有点卡在那里:)我知道,令人尴尬.
我想生成一个包含日期,月份,年份和日期的星期数组,如下所示:
星期一| 12-05-2014
周二| 2014年3
月13 日星期三| 2014年4
月14 日星期四| 2014年5
月15 日星期五| 2014年6
月16日星期六| 2014年5
月17日星期日| 18-05-2014
我希望从周一开始,就像从顶部开始的格式一样.
我尝试了这个,但周从星期一开始.
<?php $timestamp = time(); for ($day = 0 ; $day <= 7 ; $day++): ?>
<tr>
<th><?php echo date('D', $timestamp); ?></th>
<th><?php echo date('d-m-Y', $timestamp); ?></th>
<td><input type="checkbox" value="1" name="x"></td>
</tr>
<?php $timestamp += 24 * 3600; endfor; ?>
Run Code Online (Sandbox Code Playgroud)
我需要生成一个星期,从当月和上个月开始,并将所有数据放入数组中.