Skip to content
Snippets Groups Projects
user avatar
Giildo authored
10fe5145

LimitDayJS

Coverage

main

production pipeline state production coverage

develop

develop pipeline state develop coverage

Projet

Ce projet est une bibliothèque pour gérer les dates et les heures de manière simple. Les autres bibliothèques sont basées sur l'objet Date et cet objet a des limitations : la date minimale est le mar. 20 avr. -271821 00:00:00 GMT et la date maximale est le mar. 13 sept. 275760 00:00:00 GMT.

Dans le projet Octant, nous devons gérer des dates avant et après les limitations de l'objet Date.

Installation

Le package n'est pas publié ni sur NPM, ni sur gitlab. Pour l'utiliser, il faut le cloner et l'utiliser en local.

Lien local

Avec un lien vers le dossier dans le package.json.

git clone https://git.unistra.fr/vue-unistra/limitdayjs.git

package.json :

{
  "dependencies": {
    "@vue-unistra/limitdayjs": "file:./libs/limitdayjs"
  }
}

Workspace PNPM

Avec un workspace dans le pnpm-workspace.yaml. Dans le projet, créer un dossier libs et cloner le projet dedans.

git clone https://git.unistra.fr/vue-unistra/limitdayjs.git libs/limitdayjs

Créer un fichier pnpm-workspace.yaml à la racine du projet :

packages:
  - libs/*

Dans le package.json du projet :

{
  "dependencies": {
    "@vue-unistra/limitdayjs": "workspace:*"
  }
}

Utilisation

La classe

Nom Description
Day Objet pour gérer les dates et les heures
Day.utc Méthode statique pour créer un Day

Les méthodes

Nom Description
add Méthode pour ajouter une durée à une date
diff Méthode pour obtenir la différence entre deux dates
format Méthode pour formater une date
isAfter Méthode pour comparer deux dates
isBefore Méthode pour comparer deux dates
isSameAfter Méthode pour comparer deux dates
isSameBefore Méthode pour comparer deux dates
isSame Méthode pour comparer deux dates
set Méthode pour modifier un attribut
substract Méthode pour soustraire une durée à une date
toDecimal Méthode pour obtenir une date au format décimal
toISOString Méthode pour obtenir une date au format ISO 8601

Les valeurs possibles

Dans plusieurs fonctions, on peut passer le type de valeur, les valeurs possibles sont :

  • day
  • hour
  • minute
  • second
  • millisecond
  • month
  • year

Initialiser un Day

L'objet Day peut être initialisé avec plusieurs formats :

objet

L'objet, pour initialiser un Day, doit avoir le format suivant :

interface DayInitObject {
  day?: number;
  display_date?: string;
  hour?: number;
  millisecond?: number;
  minute?: number;
  month?: number;
  second?: number;
  today?: boolean;
  year: number;
}

ISO 8601

On peut également utiliser une date au format ISO 8601

const date = '2024-10-09T14:57:30+02:00'

À noter, que l'année peut avoir autant de chiffre qu'on souhaite et être négative ou précédée d'un +.

Exemple :

const date = new Day('+300000-10-09T14:57:30+02:00')

YYYY/MM/DD ou YYYY-MM-DD

La date peut également avoir le format : YYYY/MM/DD ou YYYY-MM-DD.

const date = new Day('2024/10/09')

... ou ...

const date = new Day('2024-10-09')

Accéder aux attributs

Les attributs : day, displayDate, hour, millisecond, minute, month, second, year sont disponibles en lecture seule.

const date = '2024-10-09T14:57:30+02:00'
console.log(date.day) // 9

Day.utc

Méthode statique utc pour créer un Day.

const date = Day.utc('2024-10-09T14:57:30+02:00')
console.log(date.day) // 9

set

Pour retourner une nouvelle date avec l'attribut modifié, on peut utiliser la méthode set. N.B. : l'objet actuel n'est pas modifié.

const date = new Day('2024-10-09T14:57:30+02:00')
const newDate = date.set('day', 10)
console.log(date.day) // 9
console.log(newDate.day) // 10

En premier paramètre, on passe l'attribut à modifier, les valeurs possibles + displayDate.

toISOString

Pour obtenir une date au format ISO 8601, on peut utiliser la méthode toISOString.

const date = new Day({ year: 2024, month: 10, day: 9, hour: 14, minute: 57, second: 30, millisecond: 0 })
console.log(date.toISOString()) // 2024-10-09T14:57:30+02:00

add

Pour ajouter une durée à une date, on peut utiliser la méthode add.

const date = new Day('2024-10-09T14:57:30+02:00')
date.add(10, 'day')
console.log(date.day) // 19

En premier paramètre, on passe la durée à ajouter et en second paramètre, l'unité de temps.

substract

Pour soustraire une durée à une date, on peut utiliser la méthode substract.

const date = new Day('2024-10-09T14:57:30+02:00')
date.substract(10, 'day')
console.log(date.day) // 29

En premier paramètre, on passe la durée à ajouter et en second paramètre, l'unité de temps.

diff

Pour obtenir la différence entre deux dates. On définit l'unité de temps en second paramètre.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-19T14:57:30+02:00')

console.log(date1.diff(date2, 'day')) // 10
console.log(date2.diff(date1, 'day')) // -10

En premier paramètre, on passe la date à comparer et en second paramètre, l'unité de temps.

isSame

Pour comparer deux dates et savoir si elles sont identiques, on peut utiliser la méthode isSame.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-09T14:57:30+02:00')
const date3 = new Day('2024-10-19T14:57:30+02:00')

console.log(date1.isSame(date2)) // true
console.log(date1.isSame(date3)) // false

isSameBefore

Pour comparer deux dates et savoir si la première est avant la seconde ou identique à la seconde, on peut utiliser la méthode isSameBefore.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-09T14:57:30+02:00')
const date3 = new Day('2024-10-19T14:57:30+02:00')
const date4 = new Day('2024-10-01T14:57:31+02:00')

console.log(date1.isSameBefore(date2)) // true
console.log(date1.isSameBefore(date3)) // true
console.log(date1.isSameBefore(date4)) // false

isBefore

Pour comparer deux dates et savoir si la première est avant la seconde, on peut utiliser la méthode isBefore.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-09T14:57:30+02:00')
const date3 = new Day('2024-10-19T14:57:30+02:00')
const date4 = new Day('2024-10-01T14:57:31+02:00')

console.log(date1.isBefore(date2)) // false
console.log(date1.isBefore(date3)) // true
console.log(date1.isBefore(date4)) // false

isSameAfter

Pour comparer deux dates et savoir si la première est après la seconde ou identique à la seconde, on peut utiliser la méthode isSameAfter.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-09T14:57:30+02:00')
const date3 = new Day('2024-10-19T14:57:30+02:00')
const date4 = new Day('2024-10-01T14:57:31+02:00')

console.log(date1.isSameAfter(date2)) // true
console.log(date1.isSameAfter(date3)) // false
console.log(date1.isSameAfter(date4)) // true

isAfter

Pour comparer deux dates et savoir si la première est après la seconde, on peut utiliser la méthode isAfter.

const date1 = new Day('2024-10-09T14:57:30+02:00')
const date2 = new Day('2024-10-09T14:57:30+02:00')
const date3 = new Day('2024-10-19T14:57:30+02:00')
const date4 = new Day('2024-10-01T14:57:31+02:00')

console.log(date1.isAfter(date2)) // false
console.log(date1.isAfter(date3)) // false
console.log(date1.isAfter(date4)) // true

format

Pour formater une date, on peut utiliser la méthode format.

const date = new Day('2024-10-09T14:57:30+02:00')
console.log(date.format('YYYY/MM/DD')) // 2024/10/09

Les valeurs possibles pour formater une date sont :

Valeur Description
YYYY Année sur 4 chiffres
YY Année sur 2 chiffres
MMMM Mois complet
MMM Mois abrégé
MM Mois sur 2 chiffres
M Mois sur 1 chiffre
DD Jour sur 2 chiffres
D Jour sur 1 chiffre
HH Heure sur 2 chiffres
H Heure sur 1 chiffre
mm Minute sur 2 chiffres
m Minute sur 1 chiffre
ss Seconde sur 2 chiffres
s Seconde sur 1 chiffre
SSS Milliseconde sur 3 chiffres
SS Milliseconde sur 2 chiffres

toDecimal

Pour obtenir une date au format décimal, on peut utiliser la méthode toDecimal.

const day = new Day({ year: 2021, month: 1, day: 1, hour: 1, minute: 1, second: 1, millisecond: 1 })
console.log(date.toDecimal('year')) // 20210000000000
console.log(date.toDecimal('month')) // 20210100000000
console.log(date.toDecimal('day')) // 20210101000000
console.log(date.toDecimal('hour')) // 20210101010000
console.log(date.toDecimal('minute')) // 20210101010100
console.log(date.toDecimal('second')) // 20210101010101
console.log(date.toDecimal('millisecond')) // 20210101010101.001