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

时间:2018-03-16 09:49:03

标签: php date if-statement

我需要编写一个生成随机日期的程序

$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日星期五假日和/或周末。 所以,我需要指定显示的日期是周末还是/和假日。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

您将日期设置为$ date,然后我们将$ weekend设置为false直到我们检查它,然后我们检查日期,如果是周末设置$ weekend为true。然后,如果日期是一个周末我打印它是一个周末,如果它不是我打印它不是一个周末,但你可以做任何你喜欢的事情......

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

和作为函数(还没有测试过这个):

font-family *:[ \w,\-_]+;?

答案 1 :(得分:0)

首先,让我们创建一个返回随机日期的函数:

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');

然后只需将日期和月份名称转换为您的语言。

demo

答案 2 :(得分:0)

如果您想检查国际假期,这里是我为它编写的函数。

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);

是的,您必须手动将假期添加到上面的数组中。

相关问题