From eb50067a411edd0935aebfbb272ab816a4f2d136 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Sat, 10 Aug 2019 06:44:04 -0400 Subject: [PATCH] Just use `new Date()` to parse ISO 8601 dates This should fix a weird bug where ISO dates were being parsed as a year earlier. --- chrome/content/zotero/xpcom/date.js | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/chrome/content/zotero/xpcom/date.js b/chrome/content/zotero/xpcom/date.js index dfa022eeeb..98a0bded23 100644 --- a/chrome/content/zotero/xpcom/date.js +++ b/chrome/content/zotero/xpcom/date.js @@ -228,32 +228,13 @@ Zotero.Date = new function(){ /** * Convert an ISO 8601–formatted date/time to a JS Date * - * Adapted from http://delete.me.uk/2005/03/iso8601.html (AFL-licensed) - * * @param {String} isoDate ISO 8601 date * @return {Date|False} - JS Date, or false if not a valid date */ this.isoToDate = function (isoDate) { var d = isoDate.match(_re8601); if (!d) return false; - - var offset = 0; - var date = new Date(d[1], 0, 1); - - if (d[3]) { date.setMonth(d[3] - 1); } - if (d[5]) { date.setDate(d[5]); } - if (d[7]) { date.setHours(d[7]); } - if (d[8]) { date.setMinutes(d[8]); } - if (d[10]) { date.setSeconds(d[10]); } - if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); } - if (d[14]) { - offset = (Number(d[16]) * 60) + Number(d[17]); - offset *= ((d[15] == '-') ? 1 : -1); - } - - offset -= date.getTimezoneOffset(); - var time = (Number(date) + (offset * 60 * 1000)); - return new Date(time); + return new Date(isoDate); }