Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.12.2022, 16:40
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Как получить дату компа в миллисекундах?
Написал для этого 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
Ответить с цитированием
  #2 (permalink)  
Старый 03.12.2022, 20:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

mik888em, число в миллисекундах, которое ты получаешь через getTime() очевидно считается от 1970-01-01 UTC и потому никак не зависит от твоего часового пояса.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2022, 21:36
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 145

Сам разобрался. Вот готовый 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
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2022, 22:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

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

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

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

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

Последний раз редактировалось Aetae, 03.12.2022 в 23:01.
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2022, 22:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Aetae,
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить в JQUERY каждую строку как отдельный объект? Alex1233 Общие вопросы Javascript 3 22.08.2014 06:54
Как получить значение переменной из игры на HTML5? Dimaz Общие вопросы Javascript 6 10.08.2014 16:27
Получить серверную дату с помощью jquery Chamus jQuery 10 23.07.2014 15:31
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32