Я работаю над проблемой с датой.
Итак, в приложении у меня есть таблица, в которой есть несколько пользовательских записей, в которые входит поле даты рождения (тип datetime sql).Проблема заключается в том, что для некоторых пользователей, чья дата рождения предшествует 1954 году, эта дата не отображается должным образом.
Например, у меня есть пользователь, чья дата рождения 11/08/1920 , но когда я устанавливаю дату рождения с помощью серверного скрипта, она заканчивается значением 11/07/1920 23: 23: 24 .
Я получаю значение даты из электронной таблицы, и скрипт сервера выглядит следующим образом:
function importDOBs(){
var allRecs = [];
var ss = SpreadsheetApp.openById("adfsasdfasdfasdfasdfasdf");
var sheet = ss.getActiveSheet();
var data = sheet.getRange(2,4,sheet.getLastRow(),2).getValues();
for(var i=0; i<5; i++){
var row = data[i];
var date = row[0];
var oldMrn = row[1];
var query = app.models.purgedRecords.newQuery();
query.filters.oldMrn._equals = oldMrn;
var record = query.run()[0];
if(record){
var dob = new Date(date);
record.dateOfBirth = dob;
allRecs.push(record);
}
}
app.saveRecords(allRecs);
}
Это значенияв таблице (это строки, а не даты):
1954-03-04T00:00:00
2014-03-01T00:00:00
1951-10-20T00:00:00
1920-11-08T00:00:00
1938-09-27T00:00:00
Тем не менее, я всегда получаю это:
Как видите, есть расхождения в датах, предшествующих 1954 году. До сих пор я пробовал другие вещи, такие как изменение этой части:
if(record){
var dob = new Date(date);
record.dateOfBirth = dob;
allRecs.push(record);
}
на эту:
if(record){
var dob = Utilities.formatDate(new Date(date),"GMT","yyyy-MM-dd'T'HH:mm:ss'Z'");
var birthDate = new Date(dob);
record.dateOfBirth = birthDate;
allRecs.push(record);
}
и вышесказанное привело к тому же.Я пробовал другие даты после 1954 года, и они тоже кажутся неправильными.Например, 05/19/1968 отражает 05/18/1968 23: 00: 00 .Так что, на мой взгляд, это связано с переходом на летнее время, возможно?