Created
May 26, 2019 22:19
-
-
Save git-willie/0553fee835347398fc89ff0b8e43e69f to your computer and use it in GitHub Desktop.
Displaying estimated shipping delivery date (based on client's shipping criteria)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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