繁体   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