LimitDayJS
Coverage
main
develop
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