fix Ox.parseDate()
This commit is contained in:
parent
ab6a07d137
commit
13669aec63
3 changed files with 22 additions and 15 deletions
|
@ -116,6 +116,7 @@ Ox.load('UI', {debug: true, hideScreen: true, showScreen: true, theme: 'modern'}
|
||||||
{name: 'Guy Debord', start: '1931-12-28', end: '1994-11-30', type: 'person'},
|
{name: 'Guy Debord', start: '1931-12-28', end: '1994-11-30', type: 'person'},
|
||||||
{name: 'John Lennon', start: '1940-10-09', end: '1980-12-08', type: 'person'},
|
{name: 'John Lennon', start: '1940-10-09', end: '1980-12-08', type: 'person'},
|
||||||
{name: 'Jimi Hendrix', start: '1942-11-27', end: '1970-09-18', type: 'person'},
|
{name: 'Jimi Hendrix', start: '1942-11-27', end: '1970-09-18', type: 'person'},
|
||||||
|
{name: 'Edie Sedgwick', start: '1943-04-20', end: '1971-11-16', type: 'person'},
|
||||||
{name: 'Jim Morrison', start: '1943-12-08', end: '1971-06-03', type: 'person'},
|
{name: 'Jim Morrison', start: '1943-12-08', end: '1971-06-03', type: 'person'},
|
||||||
{name: 'Osama bin Laden', start: '1957-03-10', end: '2011-05-02', type: 'person'},
|
{name: 'Osama bin Laden', start: '1957-03-10', end: '2011-05-02', type: 'person'},
|
||||||
{name: 'Michael Jackson', start: '1958-08-29', end: '2009-06-25', type: 'person'},
|
{name: 'Michael Jackson', start: '1958-08-29', end: '2009-06-25', type: 'person'},
|
||||||
|
@ -147,6 +148,7 @@ Ox.load('UI', {debug: true, hideScreen: true, showScreen: true, theme: 'modern'}
|
||||||
{name: 'American Civil War', start: '1861-04-12', end: '1865-04-09', type: 'other'},
|
{name: 'American Civil War', start: '1861-04-12', end: '1865-04-09', type: 'other'},
|
||||||
{name: 'Franco-Prussian War', start: '1870-07-19', end: '1871-05-10', type: 'other'},
|
{name: 'Franco-Prussian War', start: '1870-07-19', end: '1871-05-10', type: 'other'},
|
||||||
{name: 'Paris Commune', start: '1871-03-18', end: '1871-05-28', type: 'other'},
|
{name: 'Paris Commune', start: '1871-03-18', end: '1871-05-28', type: 'other'},
|
||||||
|
{name: 'Haymarket', start: '1886-05-04', end: '1886-05-05', type: 'other'},
|
||||||
{name: 'Titanic', start: '1912-04-15', end: '1912-04-16', type: 'other'},
|
{name: 'Titanic', start: '1912-04-15', end: '1912-04-16', type: 'other'},
|
||||||
{name: 'World War One', start: '1914-07-28', end: '1918-11-11', type: 'other'},
|
{name: 'World War One', start: '1914-07-28', end: '1918-11-11', type: 'other'},
|
||||||
{name: 'Battle of Verdun', start: '1916-02-21', end: '1916-12-18', type: 'other'},
|
{name: 'Battle of Verdun', start: '1916-02-21', end: '1916-12-18', type: 'other'},
|
||||||
|
|
|
@ -161,7 +161,7 @@ Ox.Calendar = function(options, self) {
|
||||||
var date = new Date();
|
var date = new Date();
|
||||||
date.setUTCFullYear(Math.floor(i / 12) + 1970);
|
date.setUTCFullYear(Math.floor(i / 12) + 1970);
|
||||||
date.setUTCMonth(Ox.mod(i, 12));
|
date.setUTCMonth(Ox.mod(i, 12));
|
||||||
date.setUTCDate(0);
|
date.setUTCDate(0); // fixme: WTF??
|
||||||
return date;
|
return date;
|
||||||
//*/
|
//*/
|
||||||
//return new Date(Date.UTC(Math.floor(i / 12) + 1970, Ox.mod(i, 12), 1));
|
//return new Date(Date.UTC(Math.floor(i / 12) + 1970, Ox.mod(i, 12), 1));
|
||||||
|
|
33
source/Ox.js
33
source/Ox.js
|
@ -1450,20 +1450,28 @@ Ox.makeYear = function(date, utc) {
|
||||||
Ox.parseDate(f) Takes a string ('YYYY-MM-DD HH:MM:SS') and returns a date
|
Ox.parseDate(f) Takes a string ('YYYY-MM-DD HH:MM:SS') and returns a date
|
||||||
str <s> string
|
str <s> string
|
||||||
utc <b|false> If true, Date is UTC
|
utc <b|false> If true, Date is UTC
|
||||||
|
> +Ox.parseDate('1970-01-01 01:01:01')
|
||||||
|
3661000
|
||||||
> +Ox.parseDate('1970', true)
|
> +Ox.parseDate('1970', true)
|
||||||
0
|
0
|
||||||
|
> Ox.parseDate('50', true).getUTCFullYear()
|
||||||
|
50
|
||||||
@*/
|
@*/
|
||||||
Ox.parseDate = function(str, utc) {
|
Ox.parseDate = function(str, utc) {
|
||||||
var def = [, 1, 1, 0, 0, 0];
|
var date = new Date(),
|
||||||
val = /(\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?/(str);
|
defaults = [, 1, 1, 0, 0, 0],
|
||||||
val.shift();
|
values = /(\d+)-?(\d+)?-?(\d+)? ?(\d+)?:?(\d+)?:?(\d+)?/(str);
|
||||||
val = val.map(function(v, i) {
|
values.shift();
|
||||||
return v || def[i];
|
values = values.map(function(v, i) {
|
||||||
|
return v || defaults[i];
|
||||||
});
|
});
|
||||||
val[1]--;
|
values[1]--;
|
||||||
return utc
|
[
|
||||||
? new Date(Date.UTC(val[0], val[1], val[2], val[3], val[4], val[5]))
|
'FullYear', 'Month', 'Date', 'Hours', 'Minutes', 'Seconds'
|
||||||
: new Date(val[0], val[1], val[2], val[3], val[4], val[5])
|
].forEach(function(part, i) {
|
||||||
|
date = Ox['set' + part](date, values[i], utc);
|
||||||
|
});
|
||||||
|
return date;
|
||||||
};
|
};
|
||||||
|
|
||||||
//@ Ox.setDate <f> Set the day of a date, optionally UTC
|
//@ Ox.setDate <f> Set the day of a date, optionally UTC
|
||||||
|
@ -1490,12 +1498,9 @@ Ox.parseDate = function(str, utc) {
|
||||||
return Ox.makeDate(date)['get' + (utc ? 'UTC' : '') + noun]()
|
return Ox.makeDate(date)['get' + (utc ? 'UTC' : '') + noun]()
|
||||||
}
|
}
|
||||||
Ox['set' + noun] = function(date, num, utc) {
|
Ox['set' + noun] = function(date, num, utc) {
|
||||||
// new Date(date) makes a clone, so that
|
|
||||||
// setSomething() doesn't have side effects
|
|
||||||
return new Date(
|
return new Date(
|
||||||
Ox.makeDate(date)
|
Ox.makeDate(date)['set' + (utc ? 'UTC' : '') + noun](num)
|
||||||
)['set' + (utc ? 'UTC' : '') + noun](num);
|
);
|
||||||
// fixme: maybe we _want_ set to have side effects?
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue