Skip to content

Instantly share code, notes, and snippets.

@git-willie
Created May 26, 2019 22:19
Show Gist options
  • Select an option

  • Save git-willie/0553fee835347398fc89ff0b8e43e69f to your computer and use it in GitHub Desktop.

Select an option

Save git-willie/0553fee835347398fc89ff0b8e43e69f to your computer and use it in GitHub Desktop.
Displaying estimated shipping delivery date (based on client's shipping criteria)
function estimatedDeliveryTime(){
var timeStamp_1 = new Date(),
timeStamp_2 = new Date(),
dayNames = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
monthNames = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],
estOffset = -240, // EST offset in minutes
customerTimezoneOffset = timeStamp_1.getTimezoneOffset(),
utc = (timeStamp_1.getHours() * 60) + timeStamp_1.getMinutes() + customerTimezoneOffset,
customerEstTime = utc + estOffset, // Customer time in EST
shippingCutoffTime = 16 * 60; // 4pm EST in minutes
if (customerEstTime <= shippingCutoffTime) {
orderDate = timeStamp_1.getDate();
orderDay = timeStamp_1.getDay();
timeTillCutoff = shippingCutoffTime - customerEstTime;
} else {
orderDate = timeStamp_1.getDate() + 1;
orderDay = timeStamp_1.getDay() + 1;
timeTillCutoff = shippingCutoffTime - customerEstTime + 1440;
}
nextDeliveryDay = orderDay + 1;
nextDeliveryDay = ( nextDeliveryDay > 6 ) ? nextDeliveryDay - 7 : nextDeliveryDay;
if (customerEstTime <= shippingCutoffTime) {
nextDeliveryDayString = ( nextDeliveryDay == 0 || nextDeliveryDay == 6 ) ? 'Monday' : 'tomorrow';
} else {
nextDeliveryDayString = ( nextDeliveryDay == 0 || nextDeliveryDay == 6 ) ? 'Monday' : dayNames[nextDeliveryDay];
}
// Delivery date estimation
if (orderDay == 4 || orderDay == 5) {
deliveryEarliestDate = orderDate + 4;
deliveryLatestDate = deliveryEarliestDate + 3;
} else if (orderDay == 6) {
deliveryEarliestDate = orderDate + 5;
deliveryLatestDate = deliveryEarliestDate + 5;
} else if (orderDay == 0) {
deliveryEarliestDate = orderDate + 4;
deliveryLatestDate = deliveryEarliestDate + 5;
} else {
deliveryEarliestDate = orderDate + 3;
deliveryLatestDate = deliveryEarliestDate + 5;
}
deliveryEarliestDate = timeStamp_1.setDate(deliveryEarliestDate);
deliveryEarliestDate = timeStamp_1.getDate();
deliveryEarliestMonth = monthNames[timeStamp_1.getMonth()];
deliveryEarliestDay = dayNames[timeStamp_1.getDay()];
deliveryEarliest = deliveryEarliestDay + ', ' + deliveryEarliestMonth + ' ' + deliveryEarliestDate;
deliveryLatestDate = timeStamp_2.setDate(deliveryLatestDate);
deliveryLatestDate = timeStamp_2.getDate();
deliveryLatestMonth = monthNames[timeStamp_2.getMonth()];
deliveryLatestDay = dayNames[timeStamp_2.getDay()];
deliveryLatest = deliveryLatestDay + ', ' + deliveryLatestMonth + ' ' + deliveryLatestDate;
// Display information
$('.next-delivery-day').html(nextDeliveryDayString);
$('.delivery-date-range').html(deliveryEarliest + ' - ' + deliveryLatest);
$('.delivery-cutoff-counter').html(minutesToHM(timeTillCutoff));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment