JS метод Date.getUTCMilliseconds()


Загальний опис

Date.prototype.getUTCMilliseconds() – це метод у JavaScript, призначений для отримання кількості мілісекунд від початку поточної секунди згідно з універсальним координованим часом (UTC). Даний метод забезпечує точність роботи з часом у межах мілісекунди, що робить його незамінним у ряді ситуацій.

Основна особливість Date.prototype.getUTCMilliseconds() в тому, що він завжди повертає результат згідно з UTC, незалежно від часової зони, в якій знаходиться користувач. Тому, коли ви використовуєте цей метод, ви можете бути впевнені в точності отриманого результату.

let currentDate = new Date('2021-07-20T09:26:00.123Z');
console.log(currentDate.getUTCMilliseconds()); // 123

У цьому прикладі ми створили дату з конкретною кількістю мілісекунд та вивели їх на консоль з допомогою нашого методу.

Розглянемо декілька практичних сценаріїв.

  1. Робота з логами: При аналізі логів часових міток у різних часових зонах важливо мати можливість отримувати UTC мілісекунди для синхронізації.
let logDate = new Date('2023-05-10T11:45:30.567Z');
console.log(`Log timestamp: ${logDate.getUTCMilliseconds()} ms`);
  1. Вимірювання різниці часу між подіями: Наприклад, ви можете використовувати цей метод для вимірювання часу завантаження сторінки.
let startTime = new Date();

// Припустимо, після цього йде якийсь код або завантаження ресурсу...

let endTime = new Date();
let timeDifference = endTime - startTime;

let msDifference = timeDifference % 1000;

console.log(`The process took ${msDifference} ms.`);
  1. Створення унікальних ідентифікаторів: Мілісекунди можуть бути частиною унікального ідентифікатора, особливо якщо вам потрібна висока точність.
function generateUniqueID() {
    let currentUTCDate = new Date();
    return `${currentUTCDate.getTime()}-${currentUTCDate.getUTCMilliseconds()}`;
}

console.log(generateUniqueID());
автор: Bond

Порада

При роботі з розподіленими системами або при синхронізації даних між серверами різних часових зон, завжди надавайте перевагу UTC часу. Використовуючи Date.prototype.getUTCMilliseconds(), ви можете забезпечити консистентність та точність ваших часових міток.

автор: Bond
Нотатка

Хоча Date.prototype.getUTCMilliseconds() є дуже корисним у конкретних ситуаціях, важливо розуміти його відмінність від локального методу getMilliseconds(). Перший завжди повертає UTC час, тоді як другий – локальний час користувача. В залежності від вашої задачі, виберіть той, який найкраще підходить для вас.

автор: Bond
Нотатка

Зверніть увагу, що JavaScript оперує мілісекундами, але не всі середовища виконання можуть надати точність до однієї мілісекунди. У випадках, коли необхідна надвисока точність, можливо, доведеться використовувати спеціалізовані бібліотеки або інші методи.

автор: Bond
Нотатка

Новачки часто плутають Date.prototype.getUTCMilliseconds() з Date.prototype.getMilliseconds(). Головна відмінність між ними полягає в тому, що перший повертає кількість мілісекунд від початку секунди за UTC, тоді як другий діє за локальним часом користувача. Завжди переконайтеся, що ви використовуєте правильний метод для ваших потреб.

Приклад:

let currentDate = new Date();
console.log(currentDate.getUTCMilliseconds()); // UTC час
console.log(currentDate.getMilliseconds()); // Локальний час
автор: Bond

Синтаксис

getUTCMilliseconds()

Повернення

integer

Повертає число від 0 до 999, яке представляє мілісекунди в указаному об'єкті Date, взяте за координованим всесвітнім часом (UTC).

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 4 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

В цьому прикладі, користувач може бачити годинник у форматі UTC, який показує час до мілісекунд, і може стартувати та зупиняти його, натискаючи кнопку.

HTML

<header>
  <h2 class="title">Date.prototype.getUTCMilliseconds()</h2>
  <p class="description">Повертає мілісекунди поточного об'єкта Date у форматі UTC.</p>
</header>
<main>
  <div class="result">
    <div id="clock">XX:XX:XX.XXX</div>
    <button onclick="toggleClock()">Старт/Стоп</button>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

#clock {
  font-size: 2em;
  margin-bottom: 20px;
}

button {
  cursor: pointer;
  background-color: #4CAF50;
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 4px;
}

button:hover {
  background-color: #45a049;
}

JS

let clockInterval;
let running = false;

function toggleClock() {
  if (running) {
    clearInterval(clockInterval);
  } else {
    updateClock();
    clockInterval = setInterval(updateClock, 1);
  }
  running = !running;
}

function updateClock() {
  const now = new Date();
  const hours = String(now.getUTCHours()).padStart(2, '0');
  const minutes = String(now.getUTCMinutes()).padStart(2, '0');
  const seconds = String(now.getUTCSeconds()).padStart(2, '0');
  const milliseconds = String(now.getUTCMilliseconds()).padStart(3, '0');

  document.getElementById('clock').textContent = `${hours}:${minutes}:${seconds}.${milliseconds}`;
}
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми створили функцію sleep(), яка імітує затримку на вказану кількість мілісекунд. Для вимірювання часу виконання цієї функції ми використовуємо Date.prototype.getUTCMilliseconds(). В результаті ми отримуємо різницю в мілісекундах між початковим і кінцевим часом виконання.

// Створюємо демонстраційну функцію, яка "засинає" на вказану кількість мілісекунд
function sleep(milliseconds) {
    const date = Date.now();
    let currentDate = null;
    do {
        currentDate = Date.now();
    } while (currentDate - date < milliseconds);
}

// Вимірюємо час виконання функції sleep
let startTime = new Date();  // Початковий час
sleep(100);  // Викликаємо функцію, яка "засинає" на 100 мс
let endTime = new Date();  // Кінцевий час

// Рахуємо різницю між початковим і кінцевим часами в мілісекундах
let elapsedMilliseconds = endTime.getUTCMilliseconds() - startTime.getUTCMilliseconds();

console.log(`Функція sleep виконувалася протягом ${elapsedMilliseconds} мілісекунд.`);
автор: Bond

У цьому прикладі ми створюємо два об'єкти дати, date1 та date2. date2 створюється з невеликою випадковою різницею від date1. За допомогою методу Date.prototype.getUTCMilliseconds() ми можемо перевірити, чи відбулися ці дві дати в одну і ту ж мілісекунду.

// Створюємо дві дати з випадковою різницею в мілісекундах (від 0 до 2)
let date1 = new Date();
let date2 = new Date(date1.getTime() + Math.floor(Math.random() * 3));

// Перевіряємо, чи обидві дати відбулися в одну і ту ж мілісекунду
if(date1.getUTCMilliseconds() === date2.getUTCMilliseconds()) {
    console.log("Обидві дати відбулися в одну і ту ж мілісекунду!");
} else {
    console.log("Дати відбулися в різний час.");
}
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід