我从指定日期开始计算周数,但我观察到date('W',strtotime("2015-12-31"));
和date('W',strtotime("2016-01-01"));
返回第53周,因为年份已更改,但周没有那么在过了新的一年有什么方法可以重置周柜台吗?
注意:我使用的是php5.3
答案 0 :(得分:2)
虽然技术上正确,但PHP给你的答案可能不是你想要的那个。我想你可以通过调用半周"第0周和第34周来保持兼容性。
您必须定位下一个星期一,然后将1减去结果。例如,这应该适合您:
<?php
echo date('W', strtotime('NEXT MONDAY', strtotime('2016-01-01'))) - 1;
正如您所看到的,1月1日您获得的结果int(0)
在一年中的其余时间内并未破坏兼容性,但在2016年效果很好。
注意:您必须自己在12月的最后一周修复它。但我希望这能为你提供一个可以使用的方向。
echo date('m') == 1? date('W', strtotime('NEXT MONDAY', time())) - 1 : date('W', time())
可以是一个例子。
答案 1 :(得分:0)
这是你的解决方案 这将根据您的要求检查月份和检查周
$w=(int)date('W', strtotime('2016-01-01'));
$m=(int)date('n', strtotime('2016-01-01'));
$week = $w==1?($m==12?53:1):($w>=51?($m==1?0:$w):$w);
echo $week;