Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как получить дату компа в миллисекундах? (https://javascript.ru/forum/events/84738-kak-poluchit-datu-kompa-v-millisekundakh.html)

mik888em 03.12.2022 16:40

Как получить дату компа в миллисекундах?
 
Написал для этого JS код:

let chas = "60000"; // 1минута это 60000 миллисекунд
var now = new Date().getTimezoneOffset();    //в перем now получаем смещение UTC относит моего пояса в минутах например -120
var millisek_smesh = Number(chas) * Number(now); //в перем millisek_smesh получаем смещение UTC относит моего пояса в миллисек
var date = new Date();
var mil = date.getTime(); // текущую дату в миллисекундах, но еще не сместил
var millisek_smesh_itog = Number(millisek_smesh) + Number(mil); // Изменую текущую дату на смещение  
[[ITOG]] = millisek_smesh_itog




По итогу в переменой ITOG дата в миллисекундах меньше на 4 часа от той что должна получится. Где ошибка?

Вот например у меня пояс UTC+2 и на моем компе в 03.12.2022 14:34 этот JS выдаёт значение в миллисекундах: 1670063686503 , что по факту равняется 03.12.2022 10:34:46,503

Aetae 03.12.2022 20:14

mik888em, число в миллисекундах, которое ты получаешь через getTime() очевидно считается от 1970-01-01 UTC и потому никак не зависит от твоего часового пояса.

mik888em 03.12.2022 21:36

Сам разобрался. Вот готовый JS код может кому-то будет полезно:
let chas = "60000";
var now = new Date().getTimezoneOffset();    //now -120
var millisek_smesh = Number(chas) * Number(now);
var date = new Date();
var mil = date.getTime();

if (millisek_smesh < 0) {
  var millisek_smesh_itog = Number(mil) - Number(millisek_smesh);
} else {
  var millisek_smesh_itog = Number(mil) + Number(millisek_smesh);
}

[[ITOG]] = millisek_smesh_itog

Aetae 03.12.2022 22:50

Number - не нужны - это техническая проблема.
В [[ITOG]] лежит какая-то рандомная неведомая хуйня - это логическая проблема.

Ответ на вопрос
Цитата:

Как получить дату компа в миллисекундах?
если кто-то прийдёт в тему:
Date.now() 
//или для более старых систем 
new Date().getTime()

Всё. Это будет стандартный unix timestamp, точное время миллисекунд от "начала времён"(1970-01-01T00:00:00.000Z).

Смешения и часовые пояса на это никак не влияют, т.к. это количество прошедших миллисекунд. Секунды идут сами по себе и одинаково везде, меняется лишь отображение в человекочитаемом виде.

рони 03.12.2022 22:56

Aetae,
:yes: :lol:


Часовой пояс GMT +3, время: 00:20.