@@ -108,6 +108,15 @@ const parseNoMatchNotice = () => {
108108 // noteOnce(false, 'Not match any format. Please help to fire a issue about this.');
109109} ;
110110
111+ // Use internal dayjs instance to avoid implicit dependency on plugins extended by external dayjs versions
112+ const getUDayjs = ( value ) => {
113+ if ( ! dayjs . isDayjs ( value ) || value instanceof dayjs ) {
114+ return value ;
115+ }
116+
117+ return dayjs ( value . valueOf ( ) ) ;
118+ } ;
119+
111120const generateConfig : GenerateConfig < Dayjs > = {
112121 // get
113122 getNow : ( ) => {
@@ -119,42 +128,42 @@ const generateConfig: GenerateConfig<Dayjs> = {
119128 return now ;
120129 } ,
121130 getFixedDate : ( string ) => dayjs ( string , [ 'YYYY-M-DD' , 'YYYY-MM-DD' ] ) ,
122- getEndDate : ( date ) => date . endOf ( 'month' ) ,
131+ getEndDate : ( date ) => getUDayjs ( date ) . endOf ( 'month' ) ,
123132 getWeekDay : ( date ) => {
124- const clone = date . locale ( 'en' ) ;
133+ const clone = getUDayjs ( date ) . locale ( 'en' ) ;
125134 return clone . weekday ( ) + clone . localeData ( ) . firstDayOfWeek ( ) ;
126135 } ,
127- getYear : ( date ) => date . year ( ) ,
128- getMonth : ( date ) => date . month ( ) ,
129- getDate : ( date ) => date . date ( ) ,
130- getHour : ( date ) => date . hour ( ) ,
131- getMinute : ( date ) => date . minute ( ) ,
132- getSecond : ( date ) => date . second ( ) ,
133- getMillisecond : ( date ) => date . millisecond ( ) ,
136+ getYear : ( date ) => getUDayjs ( date ) . year ( ) ,
137+ getMonth : ( date ) => getUDayjs ( date ) . month ( ) ,
138+ getDate : ( date ) => getUDayjs ( date ) . date ( ) ,
139+ getHour : ( date ) => getUDayjs ( date ) . hour ( ) ,
140+ getMinute : ( date ) => getUDayjs ( date ) . minute ( ) ,
141+ getSecond : ( date ) => getUDayjs ( date ) . second ( ) ,
142+ getMillisecond : ( date ) => getUDayjs ( date ) . millisecond ( ) ,
134143
135144 // set
136- addYear : ( date , diff ) => date . add ( diff , 'year' ) ,
137- addMonth : ( date , diff ) => date . add ( diff , 'month' ) ,
138- addDate : ( date , diff ) => date . add ( diff , 'day' ) ,
139- setYear : ( date , year ) => date . year ( year ) ,
140- setMonth : ( date , month ) => date . month ( month ) ,
141- setDate : ( date , num ) => date . date ( num ) ,
142- setHour : ( date , hour ) => date . hour ( hour ) ,
143- setMinute : ( date , minute ) => date . minute ( minute ) ,
144- setSecond : ( date , second ) => date . second ( second ) ,
145- setMillisecond : ( date , milliseconds ) => date . millisecond ( milliseconds ) ,
145+ addYear : ( date , diff ) => getUDayjs ( date ) . add ( diff , 'year' ) ,
146+ addMonth : ( date , diff ) => getUDayjs ( date ) . add ( diff , 'month' ) ,
147+ addDate : ( date , diff ) => getUDayjs ( date ) . add ( diff , 'day' ) ,
148+ setYear : ( date , year ) => getUDayjs ( date ) . year ( year ) ,
149+ setMonth : ( date , month ) => getUDayjs ( date ) . month ( month ) ,
150+ setDate : ( date , num ) => getUDayjs ( date ) . date ( num ) ,
151+ setHour : ( date , hour ) => getUDayjs ( date ) . hour ( hour ) ,
152+ setMinute : ( date , minute ) => getUDayjs ( date ) . minute ( minute ) ,
153+ setSecond : ( date , second ) => getUDayjs ( date ) . second ( second ) ,
154+ setMillisecond : ( date , milliseconds ) => getUDayjs ( date ) . millisecond ( milliseconds ) ,
146155
147156 // Compare
148- isAfter : ( date1 , date2 ) => date1 . isAfter ( date2 ) ,
149- isValidate : ( date ) => date . isValid ( ) ,
157+ isAfter : ( date1 , date2 ) => getUDayjs ( date1 ) . isAfter ( getUDayjs ( date2 ) ) ,
158+ isValidate : ( date ) => getUDayjs ( date ) . isValid ( ) ,
150159
151160 locale : {
152161 getWeekFirstDay : ( locale ) => dayjs ( ) . locale ( parseLocale ( locale ) ) . localeData ( ) . firstDayOfWeek ( ) ,
153- getWeekFirstDate : ( locale , date ) => date . locale ( parseLocale ( locale ) ) . weekday ( 0 ) ,
154- getWeek : ( locale , date ) => date . locale ( parseLocale ( locale ) ) . week ( ) ,
162+ getWeekFirstDate : ( locale , date ) => getUDayjs ( date ) . locale ( parseLocale ( locale ) ) . weekday ( 0 ) ,
163+ getWeek : ( locale , date ) => getUDayjs ( date ) . locale ( parseLocale ( locale ) ) . week ( ) ,
155164 getShortWeekDays : ( locale ) => dayjs ( ) . locale ( parseLocale ( locale ) ) . localeData ( ) . weekdaysMin ( ) ,
156165 getShortMonths : ( locale ) => dayjs ( ) . locale ( parseLocale ( locale ) ) . localeData ( ) . monthsShort ( ) ,
157- format : ( locale , date , format ) => date . locale ( parseLocale ( locale ) ) . format ( format ) ,
166+ format : ( locale , date , format ) => getUDayjs ( date ) . locale ( parseLocale ( locale ) ) . format ( format ) ,
158167 parse : ( locale , text , formats ) => {
159168 const localeStr = parseLocale ( locale ) ;
160169 for ( let i = 0 ; i < formats . length ; i += 1 ) {
0 commit comments