@item-enonic-types/lib-time
TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

Time library for Enonic XP

This library enables the usage of classes from the java.time package from Enonic XP application code. Other JavaScript-based time libraries like Moment.js or date-fns will negatively impact your bundle size and build time. This library is only a thin TypeScript-wrapper around the excellent core java.time library already present in your system!

Installation

To install this library you need to add a new dependency to your app's build.gradle file.

Gradle

repositories {
  maven { url 'https://jitpack.io' }
}

dependencies {
  include "no.item:lib-xp-time:1.0.3"
}

TypeScript

To update the version of enonic-types in package.json using npm, run the following command:

npm install --save-dev @item-enonic-types/lib-time

You can add the following changes to your tsconfig.json to get TypeScript-support.

{
  "compilerOptions": {
+   "baseUrl": "./",
+   "paths": {
+     "/lib/xp/*": ["./node_modules/@enonic-types/lib-*"],
+     "/lib/*": [ "./node_modules/@item-enonic-types/lib-*" ,"./src/main/resources/lib/*"],
+   }
  }
}

Usage

You can import java.time and java.time.format classes from "/lib/time".

Example of date math on a LocalDateTime using "/lib/time":

import { LocalDateTime, DateTimeFormatter } from "/lib/time";

const today = LocalDateTime.parse("2023-02-21T12:15:30");
const formatter = DateTimeFormatter.ofPattern("dd.MM hh:mm")
const inThreeWeeksStr = today
  .plusWeeks(3)
  .format(formatter);
// inThreeWeeksStr = "14.03 12:15"

Example of doing time math using a ZonedDateTime:

import { ZonedDateTime } from "/lib/time";

const date = ZonedDateTime.parse("2023-02-21T12:15:30+01:00");
const fiftyMinutesAgo = date.minusMinutes(50);
const time = fiftyMinutesAgo.toLocalTime();
// time = "11:25:30"

This library also exposes a utility function formatDate() to simply format a date:

import { formatDate } from "/lib/time";

const today = formatDate({
  date: "2023-02-21",
  pattern: "dd-MM-yyyy",
  locale: "no"
});
// today = "21-02-2023"

Use formatDate() with a given timezoneId

import { formatDate } from "/lib/time";

const today = formatDate({
  date: "2023-02-21",
  pattern: "dd-MM-yyyy",
  locale: "no",
  timezoneId: "Europe/Oslo"
});
// today = "21-02-2023"

Example of using Locale in formatting a LocalDateTime and get a normalized timestamp :

import { LocalDateTime, DateTimeFormatter, Locale } from "/lib/time";

const today = LocalDateTime.parse("2023-02-21T12:15:30");
const formatter = DateTimeFormatter.ofPattern("EEEE d. MMMM yyyy hh:mm:ss", new Locale("no"));
const time = today.format(formatter);
// time = "tirsdag 21. februar 2023 12:15:30"

Constants exposed from "/lib/time"

The following classes is exposed/exported from "/lib/time":

  • DateTimeFormatter
  • DayOfWeek
  • Instant
  • LocalDate
  • LocalDateTime
  • Locale
  • LocalTime
  • Month
  • OffsetDateTime
  • OffsetTime
  • ZonedDateTime
  • ZoneId
  • ZoneOffset

Building

To build the project run the following code

./gradlew build

Deploy locally

Deploy locally for testing purposes:

./gradlew publishToMavenLocal

Deploy to Jitpack

Go to the Jitpack page for lib-xp-time to deploy from GitHub (after creating a new versioned release).

Readme

Keywords

none

Package Sidebar

Install

npm i @item-enonic-types/lib-time

Weekly Downloads

32

Version

1.0.4

License

MIT

Unpacked Size

34.4 kB

Total Files

18

Last publish

Collaborators

  • tajakobsen