Don't try to parse non-SQL dates in Date.sqlToDate()
This commit is contained in:
parent
edcd2a16d2
commit
28eaaaf2bf
2 changed files with 21 additions and 2 deletions
|
@ -87,6 +87,10 @@ Zotero.Date = new function(){
|
|||
**/
|
||||
function sqlToDate(sqldate, isUTC){
|
||||
try {
|
||||
if (!this.isSQLDate(sqldate) && !this.isSQLDateTime(sqldate)) {
|
||||
throw new Error("Invalid date");
|
||||
}
|
||||
|
||||
var datetime = sqldate.split(' ');
|
||||
var dateparts = datetime[0].split('-');
|
||||
if (datetime[1]){
|
||||
|
@ -98,7 +102,7 @@ Zotero.Date = new function(){
|
|||
|
||||
// Invalid date part
|
||||
if (dateparts.length==1){
|
||||
return false;
|
||||
throw new Error("Invalid date part");
|
||||
}
|
||||
|
||||
if (isUTC){
|
||||
|
@ -699,7 +703,7 @@ Zotero.Date = new function(){
|
|||
function toUnixTimestamp(date) {
|
||||
if (date === null || typeof date != 'object' ||
|
||||
date.constructor.name != 'Date') {
|
||||
throw ('Not a valid date in Zotero.Date.toUnixTimestamp()');
|
||||
throw new Error(`'${date}' is not a valid date`);
|
||||
}
|
||||
return Math.round(date.getTime() / 1000);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,19 @@
|
|||
describe("Zotero.Date", function() {
|
||||
describe("#sqlToDate()", function () {
|
||||
it("should convert an SQL local date into a JS Date object", function* () {
|
||||
var date = "2016-02-27 22:00:00";
|
||||
var offset = new Date().getTimezoneOffset() * 60 * 1000;
|
||||
date = Zotero.Date.sqlToDate(date);
|
||||
assert.equal(date.getTime(), 1456610400000 + offset);
|
||||
})
|
||||
|
||||
it("should convert an SQL UTC date into a JS Date object", function* () {
|
||||
var date = "2016-02-27 22:00:00";
|
||||
date = Zotero.Date.sqlToDate(date, true);
|
||||
assert.equal(date.getTime(), 1456610400000);
|
||||
})
|
||||
})
|
||||
|
||||
describe("#isISODate()", function () {
|
||||
it("should determine whether a date is an ISO 8601 date", function () {
|
||||
assert.ok(Zotero.Date.isISODate("2015"));
|
||||
|
|
Loading…
Add table
Reference in a new issue