@@ -16,8 +16,25 @@ export const getFirstRunTime = (): Date => {
1616 return new Date ( now . getTime ( ) + 5 * 60 * 1000 ) ; // 5 minutes from now
1717} ;
1818
19- export const getFormattedFirstRunTime = ( ) : string => {
20- return getFirstRunTime ( ) . toLocaleString ( 'en-US' , {
19+ export const getFormattedFirstRunTime = ( formData ?: RecurrenceFormData ) : string => {
20+ let firstRunTime : Date ;
21+
22+ if ( formData ?. time ) {
23+ const [ hours , minutes ] = formData . time . split ( ':' ) . map ( Number ) ;
24+ const now = new Date ( ) ;
25+ firstRunTime = new Date ( ) ;
26+ firstRunTime . setHours ( hours , minutes , 0 , 0 ) ;
27+
28+ // If the time has already passed today, schedule for tomorrow
29+ if ( firstRunTime <= now ) {
30+ firstRunTime . setDate ( firstRunTime . getDate ( ) + 1 ) ;
31+ }
32+ } else {
33+ // Fallback to 5 minutes from now
34+ firstRunTime = getFirstRunTime ( ) ;
35+ }
36+
37+ return firstRunTime . toLocaleString ( 'en-US' , {
2138 year : 'numeric' ,
2239 month : 'short' ,
2340 day : 'numeric' ,
@@ -222,9 +239,19 @@ const calculateMonthlyPattern = (frequency: number, consecutiveMonths = 1, input
222239} ;
223240
224241export const generateCronExpression = ( data : RecurrenceFormData ) : string => {
225- const firstRunTime = getFirstRunTime ( ) ;
226- const minutes = firstRunTime . getMinutes ( ) ;
227- const hours = firstRunTime . getHours ( ) ;
242+ let minutes = 0 ;
243+ let hours = 0 ;
244+
245+ if ( data . time ) {
246+ const [ timeHours , timeMinutes ] = data . time . split ( ':' ) . map ( Number ) ;
247+ hours = timeHours ;
248+ minutes = timeMinutes ;
249+ } else {
250+ // Fallback to current time + 5 minutes if no time specified
251+ const firstRunTime = getFirstRunTime ( ) ;
252+ minutes = firstRunTime . getMinutes ( ) ;
253+ hours = firstRunTime . getHours ( ) ;
254+ }
228255
229256 const getMonthlyWeekDayIndex = ( dayName ?: string ) : number => {
230257 if ( ! dayName ) return 0 ;
0 commit comments