Сейчас загружается

Получить текущую дату и время в Node.js

Получить текущую дату и время в Node.js

В Node.js получить текущую дату и время можно с помощью встроенного объекта Date. Ниже приведены несколько полезных способов — от простого вывода до форматированной строки, подходящей для логов или имен файлов.

✅ 1. Простой способ: текущая дата и время

const now = new Date();
console.log(now.toString()); 
// Пример: Thu Nov 20 2025 14:30:45 GMT+0300 (Moscow Standard Time)

✅ 2. ISO-формат (удобен для хранения и API)

const iso = new Date().toISOString();
console.log(iso); 
// Пример: 2025-11-20T11:30:45.123Z

⚠️ Обратите внимание: .toISOString() возвращает время в UTC, а не в вашем локальном часовом поясе.

✅ 3. Форматирование под локаль (например, для логов на русском)

const options = {
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit',
  second: '2-digit',
  hour12: false
};

const localTime = new Date().toLocaleString('ru-RU', options);
console.log(localTime); 
// Пример: 20.11.2025, 14:30:45

✅ 4. Кастомный формат (например, для имени файла или лога)

const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0'); // Месяцы с 0
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');

const formatted = `${year}-${month}-${day}_${hours}-${minutes}-${seconds}`;
console.log(formatted); 
// Пример: 2025-11-20_14-30-45

🔸 Такой формат безопасен для использования в именах файлов (не содержит :, /, пробелов и т.п.).

✅ 5. Использование с fs для создания лог-файла

import { writeFile } from 'fs/promises';
import { join } from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';

// Для ES-модулей (__dirname эмуляция)
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

const now = new Date();
const timestamp = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}-${String(now.getMinutes()).padStart(2, '0')}-${String(now.getSeconds()).padStart(2, '0')}`;

const logPath = join(__dirname, 'logs', `log_${timestamp}.txt`);

await writeFile(logPath, `Лог создан: ${now.toString()}\n`, { flag: 'a' });
console.log('Лог записан в:', logPath);

Если нужно учитывать часовой пояс (например, МСК), можно использовать библиотеки вроде luxon или date-fns-tz , но для большинства задач стандартного Date достаточно.

Share this content:

Отправить комментарий