簡體   English   中英

指定日期是周末和/或假日 PHP

[英]Specify if date is a weekend and/or a holiday PHP

我需要編寫一個生成隨機日期的程序

$start = strtotime('2010-01-01');
$end =  strtotime('2018-01-01');
$random_date = date('n F Y l ', rand($start, $end));

然后我需要將月份和日期的名稱翻譯成俄語

$lat = array ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'January', 'February', 'March', 'April', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$rus = array ('Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Января', 'Февраля', 'Марта', 'Апреля', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря');
return str_replace($lat,$rus, $random_date) ; 
$holidays = array('8 января','7 января','14 января', '23 февраля','8 марта','1 апреля','12 апреля','1 мая','9 мая','12 июня','22 июня','1 сентября','27 сентября','4 ноября','12 декабря','31 декабря','1 января');//dates of rus holidays

然后我需要以這種格式顯示日期:
2 Февраля 2014 Пятница(2014 年 2 月 2 日,星期五)。

這是我遇到的問題:

最終結果必須如下所示:2014 年 2 月 2 日星期五假期和/或周末。 所以,我需要指定顯示的日期是周末還是/和假期。 有人可以幫忙嗎?

您將日期放在 $date 中,然后我們將 $weekend 設置為 false 直到我們檢查它,然后我們檢查日期,如果是周末,則將 $weekend 設置為 true。 那么如果日期是周末,我打印它是周末,如果不是,我打印它不是周末,但是你可以用它做任何你喜歡的事情......

date = '2018-03-16';
$weekend = false;
$day = date("D", strtotime($date));
if($day == 'Sat' || $day == 'Sun'){
    $weekend = true;
}
if($weekend){
    echo $date . ' It is a weekend';
} else{
    echo $date . ' It is not a weekend';
}

並作為功能(尚未測試此功能):

function isitweekend($date){
$date = '2018-03-16';
$weekend = false;
$day = date("D", strtotime($date));
if($day == 'Sat' || $day == 'Sun'){
    $weekend = true;
}
}

首先,讓我們創建一個返回隨機日期的函數:

function randomDate($start_date, $end_date) 
{
    $min = new DateTime($start_date . ' 00:00:00 UTC');
    $max = new DateTime($end_date . ' 23:59:59 UTC');
    return new DateTime('@' . rand($min->getTimestamp(), $max->getTimestamp()));
}

然后剛剛創建了while循環來檢查周末和假期:

// Fill this array with your holidays
$holidays = ['*-12-25', '*-01-01', '*-01-07', '*-05-01'];

while (true) {
    // Get random date
    $randomDate = randomDate('2010-01-01', '2018-01-01');

    // Get random date again, since this one is on weekend.
    if ($randomDate->format('N') >= 6) continue;

    // Get random date again, since this one is on holiday.
    if (in_array($randomDate->format('*-m-d'), $holidays)) continue;

    // Exit the loop, since random date is ok!
    break;
}

// Random date
echo $randomDate->format('Y-m-d');

然后只需將日期和月份名稱轉換為您的語言。

演示

如果你想檢查國際假期,這里是我為它編寫的一個函數。

function checkHoliday($date){
  if(date('l', strtotime($date)) == 'Saturday'){
    return "Saturday";
  }else if(date('l', strtotime($date)) == 'Sunday'){
    return "Sunday";
  }else{
    $receivedDate = date('d M', strtotime($date));

    $holiday = array(
      '01 Jan' => 'New Year Day',
      '18 Jan' => 'Martin Luther King Day',
      '22 Feb' => 'Washington\'s Birthday',
      '05 Jul' => 'Independence Day',
      '11 Nov' => 'Veterans Day',
      '24 Dec' => 'Christmas Eve',
      '25 Dec' => 'Christmas Day',
      '31 Dec' => 'New Year Eve'
    );

    foreach($holiday as $key => $value){
      if($receivedDate == $key){
        return $value;
      }
    }
  }
}

並這樣稱呼它

$date = '01/01/2021';

echo checkHoliday($date);

是的,您必須手動將假期添加到上面的數組中。

暫無
暫無

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

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