问题
I want to compare ISO 8601 dates in javascript as strings instead of making Date objects for each string and comparing objects.
var date_array = ['2012-10-01','2012-11-27','2012-12-23'];
console.log(date_array[0] < date_array[1]) // gives true
console.log(date_array[1] > date_array[2]) // gives false
My reason for doing this is I believe string comparisons should be faster than making objects for each date string and comparing objects.
These comparisons seem to work as expected in some browsers. Can I expect this sort of alphabetical lexicographic string comparison to work in all browsers? Is this method of date comparison actually faster than using Date objects?
回答1:
Using that comparison operator will look at the strings values lexicographically, which means the dictionary order.
In ASCII, the decimal digits are sequentially stored smallest (0
, 0x30
) to largest (9
, 0x39
). If they're consistently in this format, largest value (year) to smallest (day) and always 0
padded to the largest possible value, then these comparisons will be fine.
来源:https://stackoverflow.com/questions/13715561/compare-iso-8601-date-strings-in-javascript