@laboralphy/o876-txat
Version:
An embeddable chat library, multi channels, moderation, event based
80 lines (74 loc) • 2.52 kB
JavaScript
const IDateProvider = require('./IDateProvider');
const REGEX_YMD = /^(\d{4})[-\/]+(\d{2})[-\/]+(\d{2})$/;
const REGEX_YMDHM = /^(\d{4})[-\/]+(\d{2})[-\/]+(\d{2})\s+(\d{2}):+(\d{2})$/;
const REGEX_YMDHMS = /^(\d{4})[-\/]+(\d{2})[-\/]+(\d{2})\s+(\d{2}):+(\d{2}):+(\d{2})$/;
/**
* This provider use internal clock to provide current date/time
*/
class StdDateProvider extends IDateProvider {
/**
* @returns {Date}
*/
now () {
return new Date();
}
/**
* Ajoute du temps à un objet Date.
* @param date {Date} L'objet Date de départ.
* @param [seconds=0] {number} Le nombre de secondes à ajouter.
* @param [minutes=0] {number} Le nombre de minutes à ajouter.
* @param [hours=0] {number} Le nombre d'heures à ajouter.
* @param [days=0] {number} Le nombre de jours à ajouter.
* @returns {Date} L'objet Date mis à jour.
*/
add(date, { seconds = 0, minutes = 0, hours = 0, days = 0 }) {
// Convertir les minutes, heures et jours en millisecondes
const totalMilliseconds = (seconds * 1000) + (minutes * 60 * 1000) + (hours * 60 * 60 * 1000) + (days * 24 * 60 * 60 * 1000);
// Créer un nouvel objet Date basé sur l'objet Date d'origine
return new Date(date.getTime() + totalMilliseconds);
}
/**
* Gets a new Date from the specified string
* @example parse('2022-10-15'); parse('2022-10-15 23:58'); parse('2022-10-15 23:58:37')
* @param sDate
* @returns {Date}
*/
parse (sDate) {
let r;
r = sDate.match(REGEX_YMDHMS);
if (r) {
return new Date(
parseInt(r[1]),
parseInt(r[2]) - 1,
parseInt(r[3]),
parseInt(r[4]),
parseInt(r[5]),
parseInt(r[6])
);
}
r = sDate.match(REGEX_YMDHM);
if (r) {
return new Date(
parseInt(r[1]),
parseInt(r[2]) - 1,
parseInt(r[3]),
parseInt(r[4]),
parseInt(r[5]),
0
);
}
r = sDate.match(REGEX_YMD);
if (r) {
return new Date(
parseInt(r[1]),
parseInt(r[2]) - 1,
parseInt(r[3]),
0,
0,
0
);
}
throw new TypeError(`could not parse input date ${sDate}`);
}
}
module.exports = StdDateProvider;