mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-11 17:27:31 +02:00
Improve weather analysis by comparing same day of week from previous year
Update weather service to calculate the date of the same day of the week from the previous year for more relevant weather pattern analysis. Replit-Commit-Author: Agent Replit-Commit-Session-Id: d43bd811-9372-45a7-8ac9-4a954c0538e1 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/d43bd811-9372-45a7-8ac9-4a954c0538e1/gqQIolA
This commit is contained in:
1 parent
60efc7ef88
commit
5f5da0bc77
3 files changed
+39
-6
No files matched your search
@@ -93,12 +93,45 @@ export class WeatherService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcule la date de l'année précédente pour la même date
|
||||
* Calcule la date de l'année précédente pour le même jour de la semaine
|
||||
*/
|
||||
getPreviousYearDate(date: Date = new Date()): string {
|
||||
const previousYear = new Date(date);
|
||||
previousYear.setFullYear(date.getFullYear() - 1);
|
||||
return previousYear.toISOString().split('T')[0]; // Format YYYY-MM-DD
|
||||
const currentYear = date.getFullYear();
|
||||
const currentMonth = date.getMonth();
|
||||
const currentDayOfWeek = date.getDay(); // 0 = dimanche, 1 = lundi, etc.
|
||||
|
||||
// Créer une date pour l'année précédente, même mois
|
||||
const previousYear = new Date(currentYear - 1, currentMonth, 1);
|
||||
|
||||
// Trouver le premier jour de la semaine correspondant dans ce mois
|
||||
const firstDayOfMonth = previousYear.getDay();
|
||||
const daysToAdd = (currentDayOfWeek - firstDayOfMonth + 7) % 7;
|
||||
|
||||
// Calculer quelle semaine nous sommes dans le mois actuel
|
||||
const currentDate = date.getDate();
|
||||
const currentWeekOfMonth = Math.ceil(currentDate / 7);
|
||||
|
||||
// Aller à la même semaine du mois l'année précédente
|
||||
const targetDate = new Date(currentYear - 1, currentMonth, 1 + daysToAdd + (currentWeekOfMonth - 1) * 7);
|
||||
|
||||
// Si la date calculée dépasse le mois, prendre la dernière occurrence de ce jour dans le mois
|
||||
if (targetDate.getMonth() !== currentMonth) {
|
||||
// Revenir en arrière d'une semaine
|
||||
targetDate.setDate(targetDate.getDate() - 7);
|
||||
}
|
||||
|
||||
console.log(`🗓️ [DATE-CALC] Aujourd'hui: ${date.toISOString().split('T')[0]} (${this.getDayName(currentDayOfWeek)})`);
|
||||
console.log(`🗓️ [DATE-CALC] Année précédente: ${targetDate.toISOString().split('T')[0]} (${this.getDayName(targetDate.getDay())})`);
|
||||
|
||||
return targetDate.toISOString().split('T')[0]; // Format YYYY-MM-DD
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom du jour de la semaine
|
||||
*/
|
||||
private getDayName(dayOfWeek: number): string {
|
||||
const days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
|
||||
return days[dayOfWeek];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user