 PRODUCT MANUALS

Job Ticketing manual

# Date comparison functions (dateDiff)

You can use a `dateDiff` function to compare dates and return the number of days between these dates. For example, you might want to charge a premium for orders that need to be completed faster than your standard processing time.

To calculate the difference between the creation date and the due date:

``````function dateDiff(d1, d2)
{
var utcD1 = Date.UTC(d1.getFullYear(), d1.getMonth(), d1.getDate());
var utcD2 = Date.UTC(d2.getFullYear(), d2.getMonth(), d2.getDate());
return parseInt((utcD1 - utcD2) / (1000 * 60 * 60 * 24));
}
``````

Where:

• d1 — the later date (due date)
• d2 — the earlier date (creation date)

This function returns the time in milliseconds, so you need to convert milliseconds into days by dividing the return value by `(1000 * 60 * 60 * 24)`.

## Example

If you want to charge an extra \$7.50 for orders that are required in 2 days or less, you would firstly define the above function to determine the difference between the creation date and due date. You would then define a deliveryCost variable in your estimateCost(order) function, as follows:

``````deliveryCost = order.deliveryOption.cost;

// Check if a due date has been selected
if (order.due) {

var dueDate = new Date(order.due);

// Get the order creation date. First check that the order created date
// is not null.
var createdDate = order.created ? new Date(order.created) : new Date();

// Find the difference in days between the order creation date,
// and when the order is due.
var numberOfDays = dateDiff(dueDate, createdDate)

// If the order is required within 2 days, add \$7.50 to the cost.
if (numberOfDays <= 2) {
deliveryCost = deliveryCost + 7.5;
}
}
``````