1

Date et heure complète à la création d'un fichier

This commit is contained in:
2025-12-01 01:15:24 +01:00
parent 19952fec1f
commit 87211c9cc3
3 changed files with 40 additions and 5 deletions

View File

@@ -22,6 +22,7 @@ const path = require('path');
const https = require('https'); const https = require('https');
const readline = require('readline'); const readline = require('readline');
const { loadToolsConfig } = require('./lib/config'); const { loadToolsConfig } = require('./lib/config');
const { formatDateTime } = require('./lib/datetime');
const ROOT = process.cwd(); const ROOT = process.cwd();
const LEGO_ROOT = path.join(ROOT, 'content', 'collections', 'lego'); const LEGO_ROOT = path.join(ROOT, 'content', 'collections', 'lego');
@@ -366,8 +367,7 @@ async function main() {
const indexExists = fsSync.existsSync(indexPath); const indexExists = fsSync.existsSync(indexPath);
if (!indexExists) { if (!indexExists) {
const pageTitle = setDetails.name || selected.name; const pageTitle = setDetails.name || selected.name;
const today = new Date(); const createdAt = formatDateTime();
const date = today.toISOString().slice(0, 10);
// Collect images present in imagesDir (existing or just downloaded) // Collect images present in imagesDir (existing or just downloaded)
let imageFiles = []; let imageFiles = [];
@@ -417,7 +417,7 @@ async function main() {
const coverLine = coverFile ? `cover: images/${coverFile}\n` : ''; const coverLine = coverFile ? `cover: images/${coverFile}\n` : '';
const md = `---\n` + const md = `---\n` +
`title: "${pageTitle.replace(/"/g, '\\"')}"\n` + `title: "${pageTitle.replace(/"/g, '\\"')}"\n` +
`date: ${date}\n` + `date: ${createdAt}\n` +
coverLine + coverLine +
`---\n\n` + `---\n\n` +
body; body;

View File

@@ -9,6 +9,7 @@ const YAML = require("yaml");
const { buildUserAgent, checkUrl } = require("./lib/http"); const { buildUserAgent, checkUrl } = require("./lib/http");
const { getArchiveUrl, saveToArchive } = require("./lib/archive"); const { getArchiveUrl, saveToArchive } = require("./lib/archive");
const { scrapePage } = require("./lib/puppeteer"); const { scrapePage } = require("./lib/puppeteer");
const { formatDateTime } = require("./lib/datetime");
const LINKS_ROOT = path.join("content", "interets", "liens-interessants"); const LINKS_ROOT = path.join("content", "interets", "liens-interessants");
@@ -81,7 +82,7 @@ if (duplicateBundlePath) {
console.log(`📂 Archive URL ${archiveUrl}...`); console.log(`📂 Archive URL ${archiveUrl}...`);
// Determine the entry date // Déterminer la date et l'heure d'enregistrement
let entryDate = customDate ? new Date(customDate) : new Date(); let entryDate = customDate ? new Date(customDate) : new Date();
if (isNaN(entryDate.getTime())) { if (isNaN(entryDate.getTime())) {
console.error("❌ Invalid date format. Use YYYY-MM-DD."); console.error("❌ Invalid date format. Use YYYY-MM-DD.");
@@ -89,7 +90,7 @@ if (duplicateBundlePath) {
} }
const now = new Date(); // Current date for status const now = new Date(); // Current date for status
const formattedEntryDate = entryDate.toISOString().split("T")[0]; // YYYY-MM-DD const formattedEntryDate = formatDateTime(entryDate); // ISO 8601 local avec offset
const formattedStatusDate = now.toISOString(); // ISO format const formattedStatusDate = now.toISOString(); // ISO format
const formattedDateFrench = entryDate.toLocaleDateString("fr-FR", { const formattedDateFrench = entryDate.toLocaleDateString("fr-FR", {
year: "numeric", year: "numeric",

34
tools/lib/datetime.js Normal file
View File

@@ -0,0 +1,34 @@
/**
* Ajoute un zéro devant les valeurs inférieures à 10 pour conserver le formatage.
* @param {number|string} value Valeur numérique à normaliser.
* @returns {string} Représentation sur deux caractères.
*/
function pad(value) {
return String(value).padStart(2, '0');
}
/**
* Retourne le timestamp ISO local formatté avec offset.
* @param {Date} value Date à formater (par défaut : maintenant).
* @returns {string} Timestamp ISO 8601 avec fuseau horaire local.
*/
function formatDateTime(value = new Date()) {
const year = value.getFullYear();
const month = pad(value.getMonth() + 1);
const day = pad(value.getDate());
const hours = pad(value.getHours());
const minutes = pad(value.getMinutes());
const seconds = pad(value.getSeconds());
const offsetMinutes = value.getTimezoneOffset();
const sign = offsetMinutes <= 0 ? '+' : '-';
const absOffset = Math.abs(offsetMinutes);
const offsetHours = pad(Math.floor(absOffset / 60));
const offsetMins = pad(absOffset % 60);
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}${sign}${offsetHours}:${offsetMins}`;
}
module.exports = {
formatDateTime,
};