Одна секунда = 1 год для 31.12.2017 с использованием Utilities.formatDate
Иметь любопытные результаты преобразования даты с помощью Utilities.formatDate()
function test_date_conversion_1() {
var in_d_str = "12/31/2017"
var new_d = Utilities.formatDate(new Date(in_d_str), "EET", "MM/dd/YYYY")
return new_d
}
// new_d = "12/31/2018" 2018?!
Я пытался разработать патч и получить неожиданные результаты для этой функции
function test_date_conversion(offset) {
//offset = 1
var in_d_str = "12/31/2017"
var in_d = new Date(in_d_str)
var in_d_epoch = in_d.getTime()
var in_d_epoch_dep_1 = in_d_epoch+offset
var in_d_d_dep_1 = new Date(in_d_epoch_dep_1)
var new_d = Utilities.formatDate(in_d_d_dep_1, "EET", "MM/dd/YYYY")
}
если смещение = 1, то new_d = "31/12/2018"
если смещение = (-1), то new_d = "30.12.2017"
так 1 миллисекунда = 1 год?
EET = GMT + 2 = часовой пояс скрипта
часовой пояс рабочего листа = GMT+3
из отладчика я заметил, что дата испорчена Utilities.formatDate()
Я сработал +/-1 ч, +/-1 ч +/-1 с смещения и до сих пор не могу получить только 31.12.2017 от 31.12.2017.
Я залатал вот так
if (new_d == "12/31/2018")
new_d = "12/31/2017";
но ищите твердый раствор. спасибо за ответ заранее.
1 ответ
Третий параметр formatDate(date, timeZone, format)
является
формат в соответствии со спецификацией SimpleDateFormat
Для SimpleDateFormat вы используете Y
на неделю года и y
на год. С недели 12/31/2017
первая неделя 2018 года, будет отображаться как 2018 год.
Вместо того, чтобы использовать "MM/dd/YYYY"
использовать "MM/dd/yyyy"
,