Date.getTime () повертає мілісекунди з 1 січня 1970 р. Unixtime - це секунди з 1 січня 1970 року. Я зазвичай не кодую в Java, але я працюю над деякими виправленнями помилок. У мене є:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Чи є кращий спосіб дістатись одночасно у Java?
27
Оскільки ви кинули його на int, ви ввели проблему 2038 року (еквівалент Y2K для Unix). Ось тоді епоха Unix досягає 2 мільярдів і перекидається на мінус. Виправлення полягає в переході до 64-розрядного Unix. Еквівалент Java - це залишити його як довге.
—
Джон М
Так, я це знаю. Код, з яким він поєднується, очікує 32-бітовий int одноразово.
—
Гері Річардсон,
2038 рік найближчим часом.
—
Pacerier
Чи є власне ім’я або стандарт для currentTimeMillis? Я схильний називати це у своїй документації як мілісекундну версію часу UNIX.
—
Том
Якщо ви хочете, щоб ваше програмне забезпечення пережило переповнення, використовуйте
—
bryc
long
, ні int
. Дійсно немає причин використовувати int
для позначки часу, якщо ви не використовуєте іншу деталізацію, як-от 1 секунда = 4 секунди і т.д.