Apple Script Time interval

I used a great script from CJK with no issue , but not sure what happen, recently I noticed some invalid result :

startDate = "2019-05-31" (US Format) Then converted to "31-05-2019"

MyDate (now) = 01-06-2019

Result 31 days

    set creationDate to "2019-05-31"
    set [YearValCreation, MonthValCreation, dayValCreation] to the words of creationDate
    tell (current date) to set startDate to dayValCreation & "-" & MonthValCreation & "-" & YearValCreation --->>> "31-05-2019"

    set MyDate to short date string of (current date) --->>> "01/06/2019"
    set [dayVal, MonthVal, YearVal] to the words of MyDate
    tell (current date) to set MyDate to dayVal & "-" & MonthVal & "-" & YearVal ---->>>> "01-06-2019"
    set DateText to ""
    on timeInterval from startDate to endDate by units : 1
        tell (current date) to set [startDate, ¬
            day, [day, its month, year]] to ¬
            [it, 1, words of startDate]

        tell (current date) to set [endDate, ¬
            day, [day, its month, year]] to ¬
            [it, 1, words of endDate]

        (endDate - startDate) / units
    end timeInterval

    set dayResult to timeInterval from startDate to MyDate by days
    set dayResult to (round (dayResult * 1)) / 1 as integer
--->>> 31

Just release if the date is 30-05-2019 instead of 31-05-2019 I have a correct result


Solution 1:

It's because you are supplying dates in the format dd-mm-yyyy, where you need to be supplying them in the format yyyy-mm-dd. So your creationDate was already in the correct format before your script adjusted it.

There's no need to replace slashes with hyphens—the handler is, for the most part, indifferent to the delimiter being used (notable exceptions include "." and "+").