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){
|
function sqlToDate(sqldate, isUTC){
|
||||||
try {
|
try {
|
||||||
|
if (!this.isSQLDate(sqldate) && !this.isSQLDateTime(sqldate)) {
|
||||||
|
throw new Error("Invalid date");
|
||||||
|
}
|
||||||
|
|
||||||
var datetime = sqldate.split(' ');
|
var datetime = sqldate.split(' ');
|
||||||
var dateparts = datetime[0].split('-');
|
var dateparts = datetime[0].split('-');
|
||||||
if (datetime[1]){
|
if (datetime[1]){
|
||||||
|
@ -98,7 +102,7 @@ Zotero.Date = new function(){
|
||||||
|
|
||||||
// Invalid date part
|
// Invalid date part
|
||||||
if (dateparts.length==1){
|
if (dateparts.length==1){
|
||||||
return false;
|
throw new Error("Invalid date part");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isUTC){
|
if (isUTC){
|
||||||
|
@ -699,7 +703,7 @@ Zotero.Date = new function(){
|
||||||
function toUnixTimestamp(date) {
|
function toUnixTimestamp(date) {
|
||||||
if (date === null || typeof date != 'object' ||
|
if (date === null || typeof date != 'object' ||
|
||||||
date.constructor.name != 'Date') {
|
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);
|
return Math.round(date.getTime() / 1000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,19 @@
|
||||||
describe("Zotero.Date", function() {
|
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 () {
|
describe("#isISODate()", function () {
|
||||||
it("should determine whether a date is an ISO 8601 date", function () {
|
it("should determine whether a date is an ISO 8601 date", function () {
|
||||||
assert.ok(Zotero.Date.isISODate("2015"));
|
assert.ok(Zotero.Date.isISODate("2015"));
|
||||||
|
|
Loading…
Add table
Reference in a new issue