App-MFILE-WWW
view release on metacpan or search on metacpan
share/js/core/datetime.js view on Meta::CPAN
m = 10;
} else if (month === "NOV") {
m = 11;
} else if (month === "DEC") {
m = 12;
}
return m;
}, // monthToInt
readableDate = function (urd) {
// convert "YYYY-MM-DD HH:DD:SS+TZ" string into YYYY-MMM-DD
var ymd = urd.substr(0, urd.indexOf(" ")).split('-'),
year,
m,
day,
month;
if (ymd.length !== 3) {
return urd;
}
year = parseInt(ymd[0], 10);
m = parseInt(ymd[1], 10);
day = parseInt(ymd[2], 10);
month = intToMonth(m);
return year.toString() + "-" + month + "-" + day.toString();
}, // readableDate
strToMonth = function (buf, full) {
console.log("Entering strToMonth() with argument", buf);
var m = String(buf).trim().toLowerCase().slice(0, 3);
if (m.length < 1) {
return null;
}
if (mlo.hasOwnProperty(m)) {
if (full === true) {
return mlo[m];
} else {
return mlo[m].toUpperCase().slice(0, 3);
}
}
return null;
}, // strToMonth
timeToMinutes = function (ts) {
// convert a canonicalized time string into minutes
var buf = String(ts).split(':');
if (buf.length !== 2) {
return null;
}
buf[0] = parseInt(buf[0], 10);
if (buf[0] > 24) {
return null;
}
buf[1] = parseInt(buf[1], 10);
if (buf[1] > 59) {
return null;
}
return buf[0] * 60 + buf[1];
},
tsrangeToDateAndTimeRange = function (tsr) {
// tsr looks like this: ["2017-10-20 08:00:00+02","2017-10-20 12:00:00+02")
var date = tsr.match(/\d{4}-\d{2}-\d{2}/)[0];
return [date, tsrangeToTimeRange(tsr)];
},
tsrangeToTimeRange = function (tsr) {
// tsr looks like this: ["2017-10-20 08:00:00+02","2017-10-20 12:00:00+02")
var begin, end, h, m, s, re = /\d{2}:\d{2}:\d{2}/;
[begin, end] = tsr.split(',');
begin = begin.match(re)[0];
[h, m, s] = begin.split(':');
begin = h + ':' + m;
end = end.match(re)[0];
[h, m, s] = end.split(':');
end = h + ':' + m;
return begin + '-' + end;
},
vetDate = function (d) {
console.log("Entering vetDate() with argument", d);
var i,
td = String(d).trim(),
tda;
// handle offset date (e.g. "-1", "+2")
if (td === "0" || td.match(/^[+-]\d+$/)) {
return vetDateOffset(td);
}
tda = td.split(/-|\.|\/|\s+/);
console.log("Identified " + tda.length + " date components", tda);
if (tda.length === 1 && String(tda[0]).length === 0) {
return vetDateNothing();
} else if (tda.length === 1) {
return vetDateDD(tda);
} else if (tda.length === 2) {
if (coreLib.isInteger(tda[0]) && ! coreLib.isInteger(tda[1])) {
return vetDateDDMM(tda);
} else {
return vetDateMMDD(tda);
}
} else if (tda.length === 3) {
return vetDateYYYYMMDD(tda);
}
return null;
},
vetDateDD = function (ds) {
var d4 = String(ds).toLowerCase().slice(0, 4);
if (d4 == "toda") {
return vetDateOffset(0);
}
if (d4 == "yest") {
return vetDateOffset(-1);
}
if (d4 == "tomo") {
return vetDateOffset(+1);
}
return vetDateYYYYMMDD([
today.getFullYear(), today.getMonth() + 1, ds[0]
]);
}, // vetDateDD
vetDateDDMM = function (ds) {
return vetDateYYYYMMDD([
today.getFullYear(), ds[1], ds[0]
( run in 1.108 second using v1.01-cache-2.11-cpan-39bf76dae61 )