@@ -577,32 +577,33 @@ export function dayIndexInWeek(date?: Date) {
577577export function previousDaysInWeek ( date : Date , weekStartDayIndex : WeekDaysIndexType = 0 ) {
578578 if ( ! dateIsValid ( date ) ) return [ ] ;
579579
580- const dayIndex = dayIndexInWeek ( date ) ;
581-
582580 const previousDays : Date [ ] = [ ] ;
583581
584- for ( let i = weekStartDayIndex ; i < dayIndex ; i ++ ) {
585- previousDays . push ( dayjs ( date ) . day ( i ) . toDate ( ) ) ;
582+ let i = 1 ;
583+ let previousDay = dateAdd ( date , - i , "day" ) ;
584+ while ( dayIndexInWeek ( previousDay ) !== weekStartDayIndex ) {
585+ previousDays . push ( previousDay ) ;
586+ i ++ ;
587+ previousDay = dateAdd ( date , - i , "day" ) ;
586588 }
587589
588- return previousDays ;
590+ return previousDays . sort ( ( a , b ) => {
591+ if ( dateIsAfter ( a , b , "date" ) ) return 1 ;
592+ return - 1 ;
593+ } ) ;
589594}
590595
591596export function nextDaysInWeek ( date : Date , weekStartDayIndex : WeekDaysIndexType = 0 ) {
592597 if ( ! dateIsValid ( date ) ) return [ ] ;
593598
594- const dayIndex = dayIndexInWeek ( date ) ;
595-
596599 const nextDays : Date [ ] = [ ] ;
597600
598- let i = dayIndex + 1 ;
599-
600- if ( weekStartDayIndex > i ) {
601- i = weekStartDayIndex ;
602- }
603-
604- for ( i ; i <= 6 ; i ++ ) {
605- nextDays . push ( dayjs ( date ) . day ( i ) . toDate ( ) ) ;
601+ let i = 1 ;
602+ let nextDay = dateAdd ( date , i , "day" ) ;
603+ while ( dayIndexInWeek ( nextDay ) !== weekStartDayIndex ) {
604+ nextDays . push ( nextDay ) ;
605+ i ++ ;
606+ nextDay = dateAdd ( date , i , "day" ) ;
606607 }
607608
608609 return nextDays ;
0 commit comments