Skip to main content

How to check business hour, non-business hour, weekend and holiday using PHP?

At times, you may have faced problem in finding the solution where you have date&time as input and should check whether the date falls on Weekend, Holiday or Weekday & the time is between Business hours or Non-business hours.

Here is a code snippet to find the input(i.e date and time) comes under Holiday, Weekend, Business Hours and Non-Business Hours.

<?php
 # Getting Workday Type
 # Suppose I consider the date with time 2018-12-25 19:28:00
 # You need to find out this date&time among the list of the Business hour, Non-business hour, Weekends, And Holidays
 # Holidays list & Weekdays are in Array
 # Consider Business works 9:00 AM to 6:00PM

 $holidays = ['01-01-2018','25-12-2018','10-07-2019','15-08-2019'];
 $weekdays = [0,1,2,3,4,5,6]; //['mon','tue','wed','thu','fri']
 $input_date = '2018-12-25 19:28:00'; //'YYYY-MM-DD h:i:s'
 $business_start_time = "09:00"; 
 $business_end_time = "18:00"; 
 $type = "";

 #1st check Holiday or not
 $dt = new DateTime($input_date);
 $date = $dt->format('d-m-Y');
 if(in_array($date,$holidays))
 {
  $type = "Holiday";
 }


 #2nd Check week end or not
 $wk_no = date("w", strtotime($input_date)); //["0"=>"sun","1"=>"mon"....."6"=>"sat"]
 if(($wk_no == 0 || $wk_no == 6) && $type != "Holiday" && !in_array($wk_no,$weekdays))
 {
  $type = "Weekend";
 }

 #3rd Check work day even weekend also working day or not
 if(in_array($wk_no,$weekdays) && $type != "Weekend" && $type != "Holiday")
 {
  $type = "Working day";
 }

 #4th Condition check Business hour or non-business hour
 $begin = date("H:i", strtotime($business_start_time)); // gives 24 format
 $end = date("H:i", strtotime($business_end_time));
 $now = date("H:i", strtotime($input_date));
 if (($now >= $begin && $now <= $end) && $type == "Working day")
 {
  $type = "business hour";
 }
 else if($type == "Weekend")
 {
  $type = "Weekend";
 }
 else if($type == "Holiday")
 {
  $type = "Holiday";
 }
 else 
 {
  $type = "Non-business hour";
 }

 echo $type."
";
 ?>
 
 //OUTPUT: Holiday

Comments

Popular posts from this blog

Data Types in Python

Data Types  In C# or Java, You need to declare a variable specify them integer, string, and decimal. But in Python no need to specify. We can declare variables like Example: C# or Java int age = 28; string Name = "Siddhu"; Example: Python age = 28 Name = "Siddhu" So, you don't need to declare variable types in python. This is an advantage in Python, But still have few Disadvantages too. Example: In my Python function def add_numbers(x,y): print(x+y) add_numbers(20,50) //Output: 70 add_numbers(20,"Something") //Error:"Traceback (most recent call last): File "C:/Users/siddhartha.e/PycharmProjects/siddhu-py/my1stpycode.py", line 8, in add_numbers(50,"Something") File "C:/Users/siddhartha.e/PycharmProjects/siddhu-py/my1stpycode.py", line 4, in add_numbers print(a + b) TypeError: unsupported operand type(s) for +: 'int' and 'str'" ...

Database and Migrations

Database and Migrations You can config Database in the .env file. By default, Laravel has MySQL configuration. For example, I configured my details DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=Laravel_tutorials DB_USERNAME=root DB_PASSWORD= So how it connects the database, In your root folder config/database.php file will read the .env file configuration. Migrations: Migrations are most likely a version control for your database. Advantages You can easily allow your team to modify database schema and share to everyone in the application No headache to add a new column in the database manually. This migration will help all teammates into one path. Now check with artisan command php artisan migrate php artisan migrate This command will create basic users,password_resets and migrations tables. Here migrations table will track of all migrates You can undo previous migration using rollback command php artisan ...

Laravel form validations

 Laravel Validations: List of types "first_name" => 'required|alpha:ascii|min:3|max:100',// alpha:ascii (only accepts a-z) "middle_name" => 'string', "last_name" => 'required|string', "email" => 'required|email|unique:users,email', "password" => 'required|string|confirmed', "sex" => 'required|string', "phone_no" => 'required|string', "account_type" => 'required|string', "dob" => 'required|date_format:d-m-Y', // date with format "nationality" => 'required|string', "company" => 'required|string', "company_sector" => 'required|string', "company_address" => 'required|string' "bank_account_no" => 'required|min_digits:3|max_digits:5', "role" => 'required|in:admin,editor,viewer', ...