Библиотека Js-joda представляет собой порт API java.time
из Java для экосистемы JavaScript. Она предоставляет строгую и
предсказуемую работу с датами и временем без типичных проблем
встроенного объекта Date.
Установка через npm:
npm install @js-joda/core
Установка через Yarn:
yarn add @js-joda/core
После установки библиотека становится доступной для импорта в проекте.
Пример подключения в CommonJS:
const { LocalDate } = require('@js-joda/core');
Пример подключения в ES Modules:
import { LocalDate } from '@js-joda/core';
Js-joda полностью поддерживается в среде Node.js и не требует дополнительных зависимостей для базовой работы.
Минимальный пример:
import { LocalDate } from '@js-joda/core';
const date = LocalDate.now();
console.log(date.toString());
Запуск:
node app.js
При использовании ES-модулей необходимо указать соответствующий режим
в package.json:
{
"type": "module"
}
Библиотека может использоваться напрямую в браузере.
Установка через CDN:
<script src="https://cdn.jsdelivr.net/npm/@js-joda/core/dist/js-joda.min.js"></script>
После подключения глобальный объект становится доступен через
пространство имён JSJoda.
Пример:
<script>
const date = JSJoda.LocalDate.now();
console.log(date.toString());
</script>
Js-joda содержит встроенные типы TypeScript, поэтому отдельная
установка @types не требуется.
Установка:
npm install @js-joda/core
Пример:
import { LocalDate } from '@js-joda/core';
const date: LocalDate = LocalDate.now();
console.log(date.toString());
Компиляция:
tsc app.ts
Экосистема Js-joda разделена на несколько пакетов.
@js-joda/coreОсновной пакет библиотеки.
Содержит:
LocalDateLocalTimeLocalDateTimeZonedDateTimeDurationPeriodInstantZoneIdDateTimeFormatterУстановка:
npm install @js-joda/core
@js-joda/timezoneПакет с поддержкой временных зон IANA.
Установка:
npm install @js-joda/timezone
Подключение:
import '@js-joda/timezone';
После подключения становятся доступны зоны:
import { ZonedDateTime, ZoneId } from '@js-joda/core';
import '@js-joda/timezone';
const date = ZonedDateTime.now(ZoneId.of('Europe/Moscow'));
console.log(date.toString());
@js-joda/localeПакет локализации и форматирования.
Установка:
npm install @js-joda/locale
Пример подключения:
import '@js-joda/locale_ru';
После установки необходимо убедиться, что библиотека работает корректно.
Пример тестового файла:
import { LocalDate } from '@js-joda/core';
const currentDate = LocalDate.now();
console.log(currentDate);
Ожидаемый результат:
2026-05-24
Создание проекта:
npm init -y
Установка библиотеки:
npm install @js-joda/core
Структура проекта:
project/
│
├── node_modules/
├── package.json
└── app.js
Содержимое app.js:
import { LocalDate } from '@js-joda/core';
const date = LocalDate.now();
console.log(date.toString());
Запуск:
node app.js
При использовании старых окружений может потребоваться транспиляция.
Установка Babel:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
Создание .babelrc:
{
"presets": ["@babel/preset-env"]
}
Компиляция:
npx babel src --out-dir dist
Установка:
npm install --save-dev webpack webpack-cli
Создание webpack.config.js:
const path = require('path');
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}
};
Пример использования Js-joda:
import { LocalDate } from '@js-joda/core';
console.log(LocalDate.now().toString());
Сборка:
npx webpack
Vite обеспечивает более быструю разработку современных frontend-приложений.
Создание проекта:
npm create vite@latest
Установка зависимостей:
npm install
npm install @js-joda/core
Пример:
import { LocalDate } from '@js-joda/core';
document.body.innerHTML = LocalDate.now().toString();
Запуск:
npm run dev
ESLint помогает поддерживать единый стиль кода.
Установка:
npm install --save-dev eslint
Инициализация:
npx eslint --init
Пример конфигурации:
{
"env": {
"es2022": true,
"node": true
},
"extends": "eslint:recommended"
}
Создание tsconfig.json:
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "Node",
"strict": true,
"esModuleInterop": true
}
}
Пример файла:
import { LocalDateTime } from '@js-joda/core';
const now = LocalDateTime.now();
console.log(now.toString());
После подключения @js-joda/timezone необходимо проверить
корректность обработки зон.
Пример:
import {
ZonedDateTime,
ZoneId
} from '@js-joda/core';
import '@js-joda/timezone';
const tokyo = ZonedDateTime.now(
ZoneId.of('Asia/Tokyo')
);
const berlin = ZonedDateTime.now(
ZoneId.of('Europe/Berlin')
);
console.log(tokyo.toString());
console.log(berlin.toString());
Установка:
npm install @js-joda/core
Пример компонента:
import { LocalDate } from '@js-joda/core';
function App() {
const date = LocalDate.now();
return (
<div>
{date.toString()}
</div>
);
}
export default App;
Пример компонента Vue:
<script setup>
import { LocalDate } from '@js-joda/core';
const date = LocalDate.now();
</script>
<template>
<div>
{{ date.toString() }}
</div>
</template>
Установка:
npm install express @js-joda/core
Пример сервера:
import express from 'express';
import { LocalDateTime } from '@js-joda/core';
const app = express();
app.get('/', (req, res) => {
res.send(LocalDateTime.now().toString());
});
app.listen(3000);
Cannot use import statement outside a moduleПричина — Node.js работает в режиме CommonJS.
Решение:
{
"type": "module"
}
Либо использовать require.
Пример ошибки:
unsupported ZoneId
Причина — не подключён пакет timezone.
Решение:
import '@js-joda/timezone';
Некорректный импорт:
import LocalDate from '@js-joda/core';
Правильный импорт:
import { LocalDate } from '@js-joda/core';
Просмотр установленной версии:
npm list @js-joda/core
Просмотр доступных версий:
npm view @js-joda/core versions
Обновление до последней версии:
npm update @js-joda/core
Либо:
npm install @js-joda/core@latest
Удаление через npm:
npm uninstall @js-joda/core
Удаление через Yarn:
yarn remove @js-joda/core