w3resource

JavaScript: Find whether or not the date is in daylights savings time

JavaScript Datetime: Exercise-38 with Solution

Write a JavaScript function to find out whether or not the date is daylight savings time.

Test Data :
dt = new Date();
console.log(daylights_savings(dt));
1

Sample Solution:

JavaScript Code:

// Define a function daylights_savings that takes a Date object dt as input
function daylights_savings(dt) 
{ 
  // Initialize a variable dst to null to store the daylight savings time offset
  var dst = null;
  // Iterate over the months of the year
  for (var i = 0; i < 12; ++i) 
    {
      // Create a new Date object for the current year and month
      var d = new Date(dt.getFullYear(), i, 1);
      // Retrieve the timezone offset for the current date
      var offset = dt.getTimezoneOffset();

      // Check if the daylight savings time offset has been set
      if (dst === null) 
        dst = offset;
      // If the current offset is less than the previously stored offset, update the dst variable
      else if (offset < dst) 
         {
           dst = offset; 
           // Exit the loop if a lower offset is found
           break;
         } 
      // If the current offset is greater than the previously stored offset, exit the loop
      else if (offset > dst) 
        break;
         }
// Return 1 if the timezone offset of the provided date matches the daylight savings offset, else return 0
return (dt.getTimezoneOffset() == dst) | 0;
}

// Create a new Date object representing the current date and time
dt = new Date(); 
// Output whether the current date and time is during daylight savings time (1 for yes, 0 for no)
console.log(daylights_savings(dt)); 

// Create a new Date object representing November 1, 1989
dt = new Date(1989, 10, 1); 
// Output whether November 1, 1989, is during daylight savings time (1 for yes, 0 for no)
console.log(daylights_savings(dt));

Output:

1
1

Explanation:

In the exercise above,

  • The function takes a Date object "dt" as input.
  • It initializes a variable 'dst' to null to store the daylight savings time offset.
  • It iterates over the months of the year using a loop.
  • Inside the loop:
    • It creates a new Date object "d" for the current year and month.
    • It retrieves the timezone offset for the current date using dt.getTimezoneOffset().
  • It checks if the daylight savings time offset 'dst' has been set:
    • If not, it sets 'dst' to the current offset.
    • If the current offset is less than the previously stored offset, it updates 'dst' to the current offset and exits the loop.
    • If the current offset is greater than the previously stored offset, it exits the loop.
  • Finally, it compares the timezone offset of the provided date "dt" with the daylight savings offset 'dst'. If they match, it returns 1; otherwise, it returns 0.
  • The code then creates a new Date object representing the current date and time (dt = new Date()) and outputs whether the current date and time is during daylight savings time (1 for yes, 0 for no) using console.log(daylights_savings(dt)).
  • Similarly, it creates a new Date object representing November 1, 1989, and outputs whether November 1, 1989, is during daylight savings time.

Flowchart:

Flowchart: JavaScript- Find whether or not the date is in daylights savings time

Live Demo:

See the Pen JavaScript - Find whether or not the date is in daylights savings time-date-ex-38 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus.

Previous: Write a JavaScript function to get Timezone.
Next: Write a JavaScript function to get difference to Greenwich time (GMT) in hours.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/javascript-exercises/javascript-date-exercise-38.php