簡體   English   中英

6個月中的每周第一天

[英]Getting first day of every week in 6 months

我試圖弄清楚如何才能獲得過去6個月的第一天的第一天,而又無法獲得有效的解決方案。

如果我寫date("Ymd 00:00:00", strtotime("-1 week", date("Ymd"));它只是從當前日期減去7天;我要做的是始終返回該周的星期一日期。

預期結果:

2011-8-8 00:00:00
2011-8-1 00:00:00
2011-7-25 00:00:00
2011-7-18 00:00:00
etc

應該這樣做:

for ($i=0; $i<52/2; $i++)
echo date('Y-m-d', mktime(1, 0, 0, date('m'), date('d')-date('w')-$i*7+1, date('Y'))) . " 00:00:00\n";

它與Mike's Post略有不同,后者希望使用星期日而不是星期一。

我建議DateTime::createFromFormat

在PHP 5.3之前的版本中,可以改用strtotime

<?php
define('NUM_WEEKS', 10);

$dates = Array();
$dates[] = strtotime('Monday');

for ($i = 0; $i < NUM_WEEKS-1; $i++)
    $dates[] = strtotime('-1 week', $dates[$i]);

foreach ($dates as $date)
    echo strftime('%c', $date) . "\n";
?>

輸出:

Mon Aug 22 00:00:00 2011
Mon Aug 15 00:00:00 2011
Mon Aug  8 00:00:00 2011
Mon Aug  1 00:00:00 2011
Mon Jul 25 00:00:00 2011
Mon Jul 18 00:00:00 2011
Mon Jul 11 00:00:00 2011
Mon Jul  4 00:00:00 2011
Mon Jun 27 00:00:00 2011
Mon Jun 20 00:00:00 2011

現場演示。

如果您想將星期六(或其他任何一天)作為一周的第一天來選擇數據集,則可以采用以下解決方法:

<?php  $last_sat=date("z", strtotime("last Saturday")); 
$second_last_sat=date("z", strtotime("last Saturday-1 week"));  ?>

來源: http//www.php.net/manual/en/function.strtotime.php

您可能想要的是

<?php  $last_mon=date("z", strtotime("last Monday ")); 
$second_last_mon=date("z", strtotime("last Monday-1 week"));  ?>

等等..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM