过了新的一年重置周柜台

时间:2016-03-17 12:23:59

标签: php date

我从指定日期开始计算周数,但我观察到date('W',strtotime("2015-12-31"));date('W',strtotime("2016-01-01"));
返回第53周,因为年份已更改,但周没有那么在过了新的一年有什么方法可以重置周柜台吗? 注意:我使用的是php5.3

2 个答案:

答案 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;