Date et heure complète à la création d'un fichier
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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
34
tools/lib/datetime.js
Normal 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,
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user