Last active
August 24, 2018 03:11
-
-
Save sagirk/b24f1ba7bd5f37758ed169cab01efdb1 to your computer and use it in GitHub Desktop.
Utility to manually parse a time string (in the ISO 8601 format) back to a Date object
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
const utilities = { | |
/** | |
* Manually parse a time string back to a Date object. | |
* Read the following to understand why Date.parse() cannot be relied upon: | |
* https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | |
* https://stackoverflow.com/a/20463521 | |
* | |
* @param {string} time - The time to be parsed in the ISO 8601 format. | |
* @returns {Date} | |
*/ | |
parseTime: function parseTime(time) { | |
// Match time in the ISO 8601 format `YYYY-MM-DDTHH:mm:ssZ` and remember it | |
const timeFormat = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/; | |
const [, year, month, day, hours, minutes, seconds] = timeFormat.exec(time); | |
// Month is 0-indexed | |
const monthIndex = month - 1; | |
const parsedTime = new Date(year, monthIndex, day, hours, minutes, seconds); | |
return parsedTime; | |
}, | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment