moh_abk
moh_abk

Reputation: 2164

Javascript use only coming weekdays - disregard weekends

How can I get only weekdays with javascript.

Below is my current js;

<script>
$( document ).ready(function() {
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var d = new Date();
function ordinal_suffix_of(i) {
var j = i % 10,
k = i % 100;
if (j == 1 && k != 11) {
return i + "st";
}
if (j == 2 && k != 12) {
return i + "nd";
}
if (j == 3 && k != 13) {
return i + "rd";
}
return i + "th";
}

var currDay = d.getDate();
var day = days[ d.getDay() ];
var month = months[ d.getMonth() ];
var today = day + " " + ordinal_suffix_of(currDay) + " " + month;
var message2 = "The earliest delivery time today (" + today + ") is at 12:00noon";
var container = document.getElementById('availability-container');
var div = document.createElement('div');
div.className = 'availability';
div.innerHTML = "<p>" + message2; + "</p>";
container.appendChild(div);
$('.availability').addClass('animated pulse');
});
</script>

How can I get "today" to only show weekdays and ignore weekends, eg if its a Friday, don't show Sat and Sun show Monday.

PS: I'm able to accomplish this with PHP.

Thanks!

Upvotes: 0

Views: 74

Answers (4)

Mahesh
Mahesh

Reputation: 1635

<script>
$( document ).ready(function() {
var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

var d = new Date();
function ordinal_suffix_of(i) {
var j = i % 10,
k = i % 100;
if (j == 1 && k != 11) {
return i + "st";
}
if (j == 2 && k != 12) {
return i + "nd";
}
if (j == 3 && k != 13) {
return i + "rd";
}
return i + "th";
}

//----Edited Section
var currDay = d.getDate();
var day= d.getDay();
var numberOfDaysToAdd = 0;
if(day==6){
    numberOfDaysToAdd= 2;
}else if(days==0){
    numberOfDaysToAdd= 1;
}
currDay.setDate(currDay.getDate() + numberOfDaysToAdd); 
var day = days[ currDay.getDay() ];
var month = months[ currDay.getMonth() ];
//--- End of Edited Section

var today = day + " " + ordinal_suffix_of(currDay) + " " + month;
var message2 = "The earliest delivery time today (" + today + ") is at 12:00noon";
var container = document.getElementById('availability-container');
var div = document.createElement('div');
div.className = 'availability';
div.innerHTML = "<p>" + message2; + "</p>";
container.appendChild(div);
$('.availability').addClass('animated pulse');
});
</script>

Upvotes: 1

Elipzer
Elipzer

Reputation: 911

You could use something like this.

function getNextWeekday()
{
    var date = new Date();
    date.setDate(date.getDate() + 1);
    var day = date.getDay();
    if (day == 0)
    {
        date.setDate(date.getDate() + 1);
    }
    else if (day == 6)
    {
        date.setDate(date.getDate() + 2);
    }
    return date;
}

Upvotes: 0

Rayon
Rayon

Reputation: 36609

Try this:

while loop untill condition is met will help !

$(document).ready(function() {
  var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
  var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  var daysToAvoid = ['Friday', 'Saturday', 'Sunday'];


  function ordinal_suffix_of(i) {
    var j = i % 10,
      k = i % 100;
    if (j == 1 && k != 11) {
      return i + "st";
    }
    if (j == 2 && k != 12) {
      return i + "nd";
    }
    if (j == 3 && k != 13) {
      return i + "rd";
    }
    return i + "th";
  }

  var d = new Date();
  var currDay = d.getDate();
  var day = days[d.getDay()];
  var month = months[d.getMonth()];
  while (daysToAvoid.indexOf(day) !== -1) {
    d.setDate(currDay + 1);
    currDay = d.getDate();
    day = days[d.getDay()];
    month = months[d.getMonth()];
  }
  var today = day + " " + ordinal_suffix_of(currDay) + " " + month;
  var message2 = "The earliest delivery time today (" + today + ") is at 12:00noon";
  var container = document.getElementById('availability-container');
  var div = document.createElement('div');
  div.className = 'availability';
  div.innerHTML = "<p>" + message2 + "</p>";
  container.appendChild(div);
  $('.availability').addClass('animated pulse');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="availability-container"></div>

Upvotes: 0

Mahesh
Mahesh

Reputation: 1635

Below Function will always ensure that var someDate is a weekday.
Edit: typo in 2nd loop.

var someDate = new Date();
var day= d.getDay();
var numberOfDaysToAdd = 0;
if(day==6){
   numberOfDaysToAdd= 2;
}else if(days==0){
     numberOfDaysToAdd= 1;
}
someDate.setDate(someDate.getDate() + numberOfDaysToAdd); 

Upvotes: 0

Related Questions