При преобразовании строкового представления даты в числовые значения я получаю другой результат в Java / Groovy / PHP по сравнению с Javascript.Для некоторых дат до 1970 года метка времени JS ровно за 3600 секунд до метки времени Java.Я мог бы воспроизвести его для 1 октября, но для 1 января это нормально.
Мой тестовый пример (в Groovy, с использованием обычного Java API специально):
def sdf = new SimpleDateFormat("dd/MM/yyyy")
["01/10/1956", "01/01/1956", "01/10/1978"].each {
def d = sdf.parse(it)
println "${it} -> ${d.time}"
}
и в JS (Я просто запускаю его из консоли Chrome - здесь "9" - октябрь):
new Date(1956, 9, 1, 0, 0, 0).getTime()
Несколько примеров:
* Groovy
- 01/10/ 1956 -> -418179600000
- 01/01/1956 -> -441853200000
- 01/10/1978 -> 276040800000
* Javascript
- 1956,9,1,0,0,0 -> -418183200000
- 1956,0,1,0,0,0 -> -441853200000
- 1978,9, 1,0,0,0 -> 276040800000
=> Обратите внимание, что 01/10/1956 не преобразуется одинаково, получая разницу в 3600 секунд.
Дневной светэкономия времени или часового пояса была бы идеальным виновником, но я не понимаю, почему две вселенные разошлись в какой-то момент в прошлом.
Любой намек приветствуется!
Спасибо
РЕДАКТИРОВАТЬ больше образцов
* Java / Groovy
01/01/1974 -> 126226800000
01/10/1974 -> 149814000000
01/01/1976 -> 189298800000
01/10/1976 -> 212972400000
01/01/1978 -> 252457200000
01/10/1978 -> 276040800000
* JS
new Date(1974, 0, 1, 0, 0, 0).getTime() 126226800000
new Date(1974, 9, 1, 0, 0, 0).getTime() 149814000000
new Date(1976, 0, 1, 0, 0, 0).getTime() 189298800000
new Date(1976, 9, 1, 0, 0, 0).getTime() 212972400000
new Date(1978, 0, 1, 0, 0, 0).getTime() 252457200000
new Date(1978, 9, 1, 0, 0, 0).getTime() 276040800000
Около 1967 ~ 1971
01/01/1967 -> -94698000000
01/04/1967 -> -86922000000
01/10/1967 -> -71110800000
01/01/1968 -> -63162000000
01/04/1968 -> -55299600000
01/10/1968 -> -39488400000
01/01/1971 -> 31532400000
01/10/1971 -> 55119600000
new Date(1967, 0, 1, 0, 0, 0).getTime() -94698000000
new Date(1967, 3, 1, 0, 0, 0).getTime() -86925600000
new Date(1967, 9, 1, 0, 0, 0).getTime() -71114400000
new Date(1968, 0, 1, 0, 0, 0).getTime() -63162000000
new Date(1968, 3, 1, 0, 0, 0).getTime() -55303200000
new Date(1968, 9, 1, 0, 0, 0).getTime() -39492000000
new Date(1971, 0, 1, 0, 0, 0).getTime() 31532400000
new Date(1971, 9, 1, 0, 0, 0).getTime() 55119600000