如何獲得特定日期的星期日和星期六?PHP:如何獲得星期日和星期六給定日期輸入?
例如:
輸入:星期一,2009年9月28日
輸出應該是:
週日,2009年9月27日12:00 AM - 週六,2009年10月3日11:59 PM
我想用date
,strtotime
,mktime
和的php函數。
如果你有一個可用的功能,那麼它也適合我。
感謝提前:)
乾杯, 馬克
如何獲得特定日期的星期日和星期六?PHP:如何獲得星期日和星期六給定日期輸入?
例如:
輸入:星期一,2009年9月28日
輸出應該是:
週日,2009年9月27日12:00 AM - 週六,2009年10月3日11:59 PM
我想用date
,strtotime
,mktime
和的php函數。
如果你有一個可用的功能,那麼它也適合我。
感謝提前:)
乾杯, 馬克
您使用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
的strtotime
$input = strtotime("Monday, September 28, 2009");
$nextSunday = strtotime("next Sunday",$input);
<?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
<?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";
?>
不錯,DateTime是相對較新的 - 不是嗎? – 2009-09-28 05:13:48
@meder:默認情況下,自2006年年底發佈5.2以來,可在PECL上獲得5.1。 – Charles 2009-09-28 05:37:25
回聲日期( 「YMD H:I:S」 的strtotime(「最近的s unday「,time()));
回聲日期(「Y-m-d H:i:s」,strtotime(「next saturday」,time()));
這就是你要找的。這是我使用的。
$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')));
你會發現我的日期時間助手多方便在這種情況下,它可以在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
問題「正確的」答案是,如果提供的日期是星期日呢?然後它會給你前一個星期日,而不是當前的星期日。與週六同樣的問題。
$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";
我來到這裏尋找這種細微差別:因爲你指出的(我只是在週末測試時纔看到這個),所以我的週末邊界是錯誤的。 你有沒有理由使用12點的邊界而不是午夜(12點)? – 2017-10-02 22:59:02
看起來我可能已複製並粘貼原始答案的部分內容,並進行了必要的更改。除此之外,此刻,我想不出任何其他推理。 – 2017-10-04 07:29:36
獲取週日的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"));
感謝這個先生克萊圖斯。我認爲這是可讀性和易於使用在我看來:) – marknt15 2009-09-28 05:41:42