根據ISO標準,2013年第52周,當週週六開始時,開始2013-12-28並於2014-01-03結束(包括的)。PHP取得ISO開始日期不是星期一的日期的ISO週數
代碼:
echo date('Y-m-d', strtotime("2013-W52-6"));//prints 2013-12-28
現在,我試圖找出使用PHP的倒數。如果我有2014-01-03的日期,如果星期六的星期開始,如何知道該日期的ISO週數?
根據ISO標準,2013年第52周,當週週六開始時,開始2013-12-28並於2014-01-03結束(包括的)。PHP取得ISO開始日期不是星期一的日期的ISO週數
代碼:
echo date('Y-m-d', strtotime("2013-W52-6"));//prints 2013-12-28
現在,我試圖找出使用PHP的倒數。如果我有2014-01-03的日期,如果星期六的星期開始,如何知道該日期的ISO週數?
使用DateTime類:
$date = "2013-12-28";
$date_array = explode("-", $date);
$date = mktime(0, 0, 0, $date_array[1], $date_array[2], $date_array[0]);
$week_number = date('W', $date);
echo $week_number;
像這樣的東西。
DateTime :: createFromFormat()比爆炸更優雅... –
這太過分了。 date()和DateTime都可以處理Y-m-d格式的日期,而無需任何操作。 –
我猜DateTime對象和createFromFormat只適用於PHP 5+(不是PHP 4)。 – raj
$date = "2013-12-28";
$dayofyear = date("z", $date);
$week = floor($dayofyear/7) + 1;
// I assume week starts with Monday (I think as ISO does?)
// so only weeks that start on sunday will count as "week 0" instead of "week 1"
// I could be wildly wrong, adjust according to your needs
$first_day = date("w", date("Y", $date) . "-01-01");
if ($first_day == 6)
--$week;
echo $week;
不能重新定義['ISO-8601' weeknumber(http://en.wikipedia.org/wiki/ISO-8601#Week_dates),它有一個很清楚的,明確的定義。您可以通過定義您自己的星期編號標準來給出一個日期_another_ weeknumber,它不是'ISO-8601',您將不得不決定是否要讓偏移向前時間,或通過查看原文中的定義來提供自定義規則。它應該走哪條路? – Wrikken
星期六一週怎麼開始? –
那麼從任何日期開始,你想要它的週數?我不明白爲什麼我的回答不起作用? –