atsid/gcal-leave-scraper

View on GitHub
server/initialization/sections/bodyParsing/parseIso8601Date.js

Summary

Maintainability
A
25 mins
Test Coverage
const regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;

module.exports = (value) => {
  if (typeof value === 'string') {
    const match = value.match(regexIso8601);
    if (match) {
      const milliseconds = Date.parse(match[0]);
      if (!isNaN(milliseconds)) {
        return new Date(milliseconds);
      }
    }
  }
  return value;
};