diff --git a/front/src/applications/operationalStudies/components/MacroEditor/ngeToOsrd.ts b/front/src/applications/operationalStudies/components/MacroEditor/ngeToOsrd.ts index c3e748c6ebc..51a91367303 100644 --- a/front/src/applications/operationalStudies/components/MacroEditor/ngeToOsrd.ts +++ b/front/src/applications/operationalStudies/components/MacroEditor/ngeToOsrd.ts @@ -8,7 +8,7 @@ import { } from 'common/api/osrdEditoastApi'; import type { AppDispatch } from 'store'; import { formatToIsoDate } from 'utils/date'; -import { calculateTimeDifferenceInSeconds, formatDurationAsISO8601 } from 'utils/timeManipulation'; +import { Duration } from 'utils/duration'; import type MacroEditorState from './MacroEditorState'; import type { NodeIndexed } from './MacroEditorState'; @@ -157,7 +157,7 @@ const getTimeLockDate = ( }; const formatDateDifference = (start: Date, stop: Date) => - formatDurationAsISO8601(calculateTimeDifferenceInSeconds(start, stop)); + Duration.subtractDate(stop, start).toISOString(); const createTrainSchedulePayload = async ({ trainrunSections, diff --git a/front/src/modules/trainschedule/components/ImportTrainSchedule/generateTrainSchedulesPayloads.ts b/front/src/modules/trainschedule/components/ImportTrainSchedule/generateTrainSchedulesPayloads.ts index 425f90ea660..06cc096fbd9 100644 --- a/front/src/modules/trainschedule/components/ImportTrainSchedule/generateTrainSchedulesPayloads.ts +++ b/front/src/modules/trainschedule/components/ImportTrainSchedule/generateTrainSchedulesPayloads.ts @@ -4,7 +4,7 @@ import nextId from 'react-id-generator'; import type { ImportedTrainSchedule } from 'applications/operationalStudies/types'; import type { TrainScheduleBase } from 'common/api/osrdEditoastApi'; import { formatToIsoDate } from 'utils/date'; -import { calculateTimeDifferenceInSeconds, formatDurationAsISO8601 } from 'utils/timeManipulation'; +import { Duration } from 'utils/duration'; export function generateTrainSchedulesPayloads( trains: ImportedTrainSchedule[], @@ -19,6 +19,8 @@ export function generateTrainSchedulesPayloads( return payloads; // Skip this train } + const departureTime = new Date(train.departureTime); + const { path, schedule } = train.steps.reduce( (acc, step, index) => { const stepId = nextId(); @@ -37,13 +39,10 @@ export function generateTrainSchedulesPayloads( // Skip first step, handle time differences if (index !== 0) { - const timeDifferenceInSeconds = calculateTimeDifferenceInSeconds( - train.departureTime, - step.arrivalTime - ); + const arrivalTime = new Date(step.arrivalTime); const schedulePoint: NonNullable[number] = { at: stepId, - arrival: formatDurationAsISO8601(timeDifferenceInSeconds), + arrival: Duration.subtractDate(arrivalTime, departureTime).toISOString(), stop_for: step.duration ? `PT${step.duration}S` : undefined, }; acc.schedule.push(schedulePoint); diff --git a/front/src/utils/timeManipulation.ts b/front/src/utils/timeManipulation.ts index 8b500791db0..befdad3c6ec 100644 --- a/front/src/utils/timeManipulation.ts +++ b/front/src/utils/timeManipulation.ts @@ -77,10 +77,6 @@ export function calculateTimeDifferenceInDays(datetime1?: Date, datetime2?: Date return dayjs.duration(date2.getTime() - date1.getTime()).asDays(); } -export function formatDurationAsISO8601(seconds: number) { - return `PT${Math.abs(seconds)}S`; -} - /** * Parse ISO8601 duration, for instance "PT11H9M8S" (11h, 9min and 8s) to seconds */