date-from-string v1.0.1
date-from-string
Take a string date and convert it into a date.
Why?!
The little story is that while playing with dates, I stumble upon this issue:
I tweeted my surprise, and Matt Johnson who knows about dates, helped me understand basically that dates in JavaScript was a mess.
The Date constructor is only required to recognize ISO8601 compliant strings (which have two-digits in months and days fields). When it does, they are treated as being at UTC midnight instead of local midnight - which is opposite of ISO8601, but a requirement of ECMAScript.
Your 1st example is being treated as UTC because of this.
Your 2nd example is non-iso compliant, but Chrome has decided to parse it as local time (implementation specific behavior).
Your 3rd example is iso-compliant, but is treated as local time by the spec because it has a time
Here's the small thread on Twitter
So this helper helps create dates in a more predictable way. If you have any issues, just let me know!
Installation
npm install date-from-string --save
yarn add date-from-string
bower install date-from-string --save
Usage
Javascript
var dfs = require('date-from-string');
// same as new Date(2013, 10, 14)
dfs.parse('2013-11-14');
// same as new Date(2013, 0, 1)
dfs.parse('2013-01-01') === dfs.parse('2013-1-1');
// new Date('2013-11-14T00:00:00.000Z')
dfs.parse('2013-11-14T00:00:00.000Z');
/** You can also override time **/
// same as new Date(2013, 10, 14, 15, 49, 30, 12)
dfs.parse('2013-11-14', 15, 49, 30, 12);
// Or also with a full date and time
// same as new Date(2013, 0, 1, 15, 49, 30, 12)
dfs.parse('2013-01-01T00:00:00.000Z', 15, 49, 30, 12);
TypeScript
import { parse } from 'date-from-string';
console.log(parse('2013-01-01'))
AMD
define(function(require,exports,module){
var dfs = require('date-from-string');
});
Test
npm run test