2009-09-28 179 views
6

如何獲得特定日期的星期日和星期六?PHP:如何獲得星期日和星期六給定日期輸入?

例如:

輸入:星期一,2009年9月28日

輸出應該是:

週日,2009年9月27日12:00 AM - 週六,2009年10月3日11:59 PM

我想用datestrtotimemktime和的php函數。

如果你有一個可用的功能,那麼它也適合我。

感謝提前:)

乾杯, 馬克

回答

16

您使用strtotime()date()

<?php 
$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
$start = strtotime('last sunday, 12pm', $time); 
$end = strtotime('next saturday, 11:59am', $time); 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
?> 

輸出:

Input: Monday, September 28, 2009 
Output: Sunday, September 27, 2009 12:00 PM - Saturday, October 3, 2009 11:59 AM 
+0

感謝這個先生克萊圖斯。我認爲這是可讀性和易於使用在我看來:) – marknt15 2009-09-28 05:41:42

3

看看strtotime

strtotime('next sunday', strtotime($your_date_string)); 
0

的strtotime

$input = strtotime("Monday, September 28, 2009"); 
$nextSunday = strtotime("next Sunday",$input); 
0
<?php 

$date = strtotime('Monday, September 28, 2009 - 1 day'); 
$initialString = date('l, F d, Y g:i A', $date); 
$end = date('l, F d, Y g:i A', strtotime('next saturday 11:59 pm', $date)); 

echo $initialString . ' - ' . $end; 

輸出: 週日,2009年9月27日12:00 AM - 週六,2009年10月3日下午11:59

9
<?php 

date_default_timezone_set('Europe/London'); 

$datetime = new DateTime("2009-09-23 12:00:00"); 

// Saturday 
$datetime->setISODate(2009, $datetime->format("W"), 6); 
print "Saturday:" . $datetime->format(DATE_ATOM) . "\n"; 
// Sunday 
$datetime->setISODate(2009, $datetime->format("W"), 0); 
print "Sunday: " . $datetime->format(DATE_ATOM) . "\n"; 


?> 
+0

不錯,DateTime是相對較新的 - 不是嗎? – 2009-09-28 05:13:48

+0

@meder:默認情況下,自2006年年底發佈5.2以來,可在PECL上獲得5.1。 – Charles 2009-09-28 05:37:25

1

回聲日期( 「YMD H:I:S」 的strtotime(「最近的s unday「,time()));

回聲日期(「Y-m-d H:i:s」,strtotime(「next saturday」,time()));

0

這就是你要找的。這是我使用的。

$beginningOfWeek = date('Y-m-d H:i:s', strtotime('last Sunday')); 
$endOfWeek = date('Y-m-d H:i:s', strtotime('+6 day', strtotime('last Sunday'))); 
0

你會發現我的日期時間助手多方便在這種情況下,它可以在3條線

完成

http://normandqq.github.io/Date-Time-Helper/

$date = '2013-08-11'; 
    $monday = Model_DTHpr::getMondayByDate($date); 
    $sunday = Model_DTHpr::adjustDays("add",$monday,6); 

出認沽:

2013-08-05 //Monday 
    2013-08-11 //Sunday 
1

問題「正確的」答案是,如果提供的日期是星期日呢?然後它會給你前一個星期日,而不是當前的星期日。與週六同樣的問題。

$s = 'Monday, September 28, 2009'; 
$time = strtotime($s); 
if(date('D', $time) == "Sun"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('last sunday, 12pm', $time); 
} 
if(date('D', $time) == "Sat"){ 
    $start = strtotime(' 12pm', $time); 
} 
else { 
    $start = strtotime('next saturday, 12pm', $time); 
} 
$format = 'l, F j, Y g:i A'; 
$start_day = date($format, $start); 
$end_day = date($format, $end); 
header('Content-Type: text/plain'); 
echo "Input: $s\nOutput: $start_day - $end_day"; 
+0

我來到這裏尋找這種細微差別:因爲你指出的(我只是在週末測試時纔看到這個),所以我的週末邊界是錯誤的。 你有沒有理由使用12點的邊界而不是午夜(12點)? – 2017-10-02 22:59:02

+0

看起來我可能已複製並粘貼原始答案的部分內容,並進行了必要的更改。除此之外,此刻,我想不出任何其他推理。 – 2017-10-04 07:29:36

0

獲取週日的PHP代碼:

echo "Today Is : " . date("d-m-Y"); 
$dw = date("w"); 
$dw = 7-$dw; 
echo "\nNext Sunday Is" .date('d-m-Y', strtotime("+$dw days")); 
相關問題