1- QUnit . module ( 'test-datetime' , function ( ) {
2- QUnit . test ( 'Test' , async function ( assert ) {
1+ Date . prototype . format = function ( format ) {
2+ var o = {
3+ "M+" : this . getMonth ( ) + 1 , //month
4+ "d+" : this . getDate ( ) , //day
5+ "h+" : this . getHours ( ) , //hour
6+ "m+" : this . getMinutes ( ) , //minute
7+ "s+" : this . getSeconds ( ) , //second
8+ "q+" : Math . floor ( ( this . getMonth ( ) + 3 ) / 3 ) , //quarter
9+ "S" : this . getMilliseconds ( ) //millisecond
10+ }
11+ if ( / ( y + ) / . test ( format ) ) format = format . replace ( RegExp . $1 ,
12+ ( this . getFullYear ( ) + "" ) . substr ( 4 - RegExp . $1 . length ) ) ;
13+ for ( var k in o ) if ( new RegExp ( "(" + k + ")" ) . test ( format ) )
14+ format = format . replace ( RegExp . $1 ,
15+ RegExp . $1 . length == 1 ? o [ k ] :
16+ ( "00" + o [ k ] ) . substr ( ( "" + o [ k ] ) . length ) ) ;
17+ return format ;
18+ }
19+ QUnit . module ( 'test-datetime' , function ( ) {
20+ QUnit . test ( 'DATEVALUE_Test' , async function ( assert ) {
321 await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
4- assert . equal ( 1 , 1 ) ;
522
23+ var engine = new AlgorithmEngine ( ) ;
24+ var dt = engine . TryEvaluate ( "DATEVALUE('2016-01-01')" , new Date ( ) ) ;
25+ assert . equal ( dt , "2016-01-01 00:00:00" ) ;
26+ dt = engine . TryEvaluate ( "DATEVALUE('2016-01-01')" , new Date ( ) ) ;
27+ assert . equal ( dt , "2016-01-01 00:00:00" ) ;
28+
29+ // chinese time 中国8时区
30+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899000',0)" , new Date ( ) ) ;
31+ assert . equal ( dt , "2023-08-05 11:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
32+
33+
34+ // chinese time
35+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899',0)" , new Date ( ) ) ;
36+ assert . equal ( dt , "2023-08-05 11:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
37+
38+
39+ engine . UseLocalTime = true ;
40+ // chinese time
41+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899000',0)" , new Date ( ) ) ;
42+ assert . equal ( dt , "2023-08-05 19:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
43+
44+ // chinese time
45+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899',0)" , new Date ( ) ) ;
46+ assert . equal ( dt , "2023-08-05 19:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
47+
48+ // chinese time
49+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899000')" , new Date ( ) ) ;
50+ assert . equal ( dt , "2023-08-05 19:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
51+
52+ // chinese time
53+ dt = engine . TryEvaluate ( "DATEVALUE('1691234899')" , new Date ( ) ) ;
54+ assert . equal ( dt , "2023-08-05 19:28:19" ) ; // new Date(2023, 8, 5, 19, 28, 19));
55+
56+ } ) ;
57+
58+
59+ QUnit . test ( 'TIMESTAMP_Test' , async function ( assert ) {
60+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
61+
62+ var engine = new AlgorithmEngine ( ) ;
63+ engine . UseLocalTime = true ;
64+
65+ // chinese time
66+ var dt = engine . TryEvaluate ( "TIMESTAMP('2016-01-01')" , 0 ) ;
67+ assert . equal ( dt , 1451577600000 ) ;
68+
69+ dt = engine . TryEvaluate ( "TIMESTAMP('2016-01-01',0)" , 0 ) ;
70+ assert . equal ( dt , 1451577600000 ) ;
71+
72+ dt = engine . TryEvaluate ( "TIMESTAMP('2016-01-01',1)" , 0 ) ;
73+ assert . equal ( dt , 1451577600 ) ;
74+ } ) ;
75+
76+ QUnit . test ( 'TIMEVALUE_test' , async function ( assert ) {
77+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
78+
79+ var engine = new AlgorithmEngine ( ) ;
80+ var dt = engine . TryEvaluate ( "TIMEVALUE('12:12:12')" , "" ) ;
81+ assert . equal ( dt , "12:12:12" ) ;
82+ } ) ;
83+
84+ QUnit . test ( 'DATE_test' , async function ( assert ) {
85+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
86+
87+ var engine = new AlgorithmEngine ( ) ;
88+ var dt = engine . TryEvaluate ( "DATE(2016,1,1)" , new Date ( ) ) ;
89+ assert . equal ( dt , "2016-01-01 00:00:00" ) ;
90+ } ) ;
91+
92+ QUnit . test ( 'time_test' , async function ( assert ) {
93+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
94+
95+ var engine = new AlgorithmEngine ( ) ;
96+ var dt = engine . TryEvaluate ( "time(11,12,13)" , "" ) ;
97+ assert . equal ( dt , "11:12:13" ) ;
98+
99+ } ) ;
100+
101+ QUnit . test ( 'Now_test' , async function ( assert ) {
102+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
103+
104+ var engine = new AlgorithmEngine ( ) ;
105+ var dt = engine . TryEvaluate ( "now()" , new Date ( ) ) ;
106+ assert . equal ( new Date ( dt ) . format ( 'yyyy-MM-dd hh:mm:ss' ) , new Date ( ) . format ( 'yyyy-MM-dd hh:mm:ss' ) ) ;
107+ } ) ;
108+
109+ QUnit . test ( 'Today_test' , async function ( assert ) {
110+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
111+ var engine = new AlgorithmEngine ( ) ;
112+ var dt = engine . TryEvaluate ( "Today()" , new Date ( ) ) ;
113+ assert . equal ( new Date ( dt ) . format ( 'yyyy-MM-dd hh:mm:ss' ) , new Date ( ) . format ( 'yyyy-MM-dd 00:00:00' ) ) ;
114+ } ) ;
115+
116+ QUnit . test ( 'year_Test' , async function ( assert ) {
117+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
118+ var engine = new AlgorithmEngine ( ) ;
119+ var dt = engine . TryEvaluate ( "year(now())" , 0 ) ;
120+ assert . equal ( dt , new Date ( ) . getFullYear ( ) ) ;
121+ } ) ;
122+
123+ QUnit . test ( 'Month_test' , async function ( assert ) {
124+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
125+ var engine = new AlgorithmEngine ( ) ;
126+ var dt = engine . TryEvaluate ( "Month(now())" , 0 ) ;
127+ assert . equal ( dt , new Date ( ) . getMonth ( ) + 1 ) ;
128+ } ) ;
129+
130+ QUnit . test ( 'Day_test' , async function ( assert ) {
131+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
132+ var engine = new AlgorithmEngine ( ) ;
133+ var dt = engine . TryEvaluate ( "Day(now())" , 0 ) ;
134+ assert . equal ( dt , new Date ( ) . getDate ( ) ) ;
135+ } ) ;
136+
137+ QUnit . test ( 'Hour_test' , async function ( assert ) {
138+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
139+ var engine = new AlgorithmEngine ( ) ;
140+ var dt = engine . TryEvaluate ( "Hour(now())" , 0 ) ;
141+ assert . equal ( dt , new Date ( ) . getHours ( ) ) ;
142+ } ) ;
143+
144+ QUnit . test ( 'Minute_test' , async function ( assert ) {
145+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
146+ var engine = new AlgorithmEngine ( ) ;
147+ var dt = engine . TryEvaluate ( "Minute(now())" , 0 ) ;
148+ assert . equal ( dt , new Date ( ) . getMinutes ( ) ) ;
6149 } ) ;
7- } ) ;
150+
151+ QUnit . test ( 'Second_test' , async function ( assert ) {
152+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
153+ var engine = new AlgorithmEngine ( ) ;
154+ var dt = engine . TryEvaluate ( "Second(now())" , 0 ) ;
155+ assert . equal ( dt , new Date ( ) . getSeconds ( ) ) ;
156+ } ) ;
157+
158+ QUnit . test ( 'WEEKDAY_test' , async function ( assert ) {
159+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
160+
161+ var engine = new AlgorithmEngine ( ) ;
162+ var dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,7))" , 0 ) ;
163+ assert . equal ( dt , 7 ) ;
164+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,7),1)" , 0 ) ;
165+ assert . equal ( dt , 7 ) ;
166+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,7),2)" , 0 ) ;
167+ assert . equal ( dt , 6 ) ;
168+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,7),3)" , 0 ) ;
169+ assert . equal ( dt , 5 ) ;
170+
171+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,8),1)" , 0 ) ;
172+ assert . equal ( dt , 1 ) ;
173+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,8),2)" , 0 ) ;
174+ assert . equal ( dt , 7 ) ;
175+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,8),3)" , 0 ) ;
176+ assert . equal ( dt , 6 ) ;
177+
178+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,2),1)" , 0 ) ;
179+ assert . equal ( dt , 2 ) ;
180+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,2),2)" , 0 ) ;
181+ assert . equal ( dt , 1 ) ;
182+ dt = engine . TryEvaluate ( "WEEKDAY(date(2017,1,2),3)" , 0 ) ;
183+ assert . equal ( dt , 0 ) ;
184+ } ) ;
185+
186+ QUnit . test ( 'DATEDIF_Test' , async function ( assert ) {
187+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
188+ var engine = new AlgorithmEngine ( ) ;
189+ var dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','y')" , 0 ) ;
190+ assert . equal ( dt , 41 ) ;
191+
192+ dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','m')" , 0 ) ;
193+ assert . equal ( dt , 503 ) ;
194+
195+ dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','d')" , 0 ) ;
196+ assert . equal ( dt , 15318 ) ;
197+
198+
199+ dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','yd')" , 0 ) ;
200+ assert . equal ( dt , 342 ) ;
201+
202+ dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','ym')" , 0 ) ;
203+ assert . equal ( dt , 11 ) ;
204+
205+ dt = engine . TryEvaluate ( "DATEDIF('1975-1-30','2017-1-7','md')" , 0 ) ;
206+ assert . equal ( dt , 8 ) ;
207+ } ) ;
208+ QUnit . test ( 'DAYS360_test' , async function ( assert ) {
209+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
210+ var engine = new AlgorithmEngine ( ) ;
211+ var dt = engine . TryEvaluate ( "DAYS360('1975-1-30','2017-1-7')" , 0 ) ;
212+ assert . equal ( dt , 15097 ) ;
213+ } ) ;
214+ QUnit . test ( 'EDATE_test' , async function ( assert ) {
215+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
216+ var engine = new AlgorithmEngine ( ) ;
217+ var dt = engine . TryEvaluate ( "EDATE(\"2012-1-31\",32)" , new Date ( ) ) ;
218+ assert . equal ( dt , "2014-09-30 00:00:00" ) ;
219+ } ) ;
220+ QUnit . test ( 'EOMONTH_test' , async function ( assert ) {
221+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
222+ var engine = new AlgorithmEngine ( ) ;
223+ var dt = engine . TryEvaluate ( "EOMONTH(\"2012-2-1\",32)" , new Date ( ) ) ;
224+ assert . equal ( dt , "2014-10-31 00:00:00" ) ;
225+ } ) ;
226+ QUnit . test ( 'NETWORKDAYS_test' , async function ( assert ) {
227+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
228+ var engine = new AlgorithmEngine ( ) ;
229+ var dt = engine . TryEvaluate ( "NETWORKDAYS(\"2012-1-1\",\"2013-1-1\")" , 0 ) ;
230+ assert . equal ( dt , 262 ) ;
231+ } ) ;
232+ QUnit . test ( 'WORKDAY_test' , async function ( assert ) {
233+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
234+ var engine = new AlgorithmEngine ( ) ;
235+ var dt = engine . TryEvaluate ( "WORKDAY(\"2012-1-2\",145)" , new Date ( ) ) ;
236+ assert . equal ( dt , "2012-07-23 00:00:00" ) ;
237+ } ) ;
238+ QUnit . test ( 'WEEKNUM_test' , async function ( assert ) {
239+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
240+ var engine = new AlgorithmEngine ( ) ;
241+ var dt = engine . TryEvaluate ( "WEEKNUM(\"2016-1-3\")" , 0 ) ;
242+ assert . equal ( dt , 2 ) ;
243+ dt = engine . TryEvaluate ( "WEEKNUM(\"2016-1-2\")" , 0 ) ;
244+ assert . equal ( dt , 1 ) ;
245+
246+ dt = engine . TryEvaluate ( "WEEKNUM(\"2016-1-4\",2)" , 0 ) ;
247+ assert . equal ( dt , 2 ) ;
248+ dt = engine . TryEvaluate ( "WEEKNUM(\"2016-1-3\",2)" , 0 ) ;
249+ assert . equal ( dt , 1 ) ;
250+ dt = engine . TryEvaluate ( "WEEKNUM(\"2016-1-2\",2)" , 0 ) ;
251+ assert . equal ( dt , 1 ) ;
252+ } ) ;
253+ QUnit . test ( 'Add_test' , async function ( assert ) {
254+ await new Promise ( resolve => setTimeout ( resolve , 300 ) ) ;
255+ var engine = new AlgorithmEngine ( ) ;
256+ var dt = engine . TryEvaluate ( "'2000-02-01'.addYears(1).year()" , 0 ) ;
257+ assert . equal ( dt , 2001 ) ;
258+
259+ dt = engine . TryEvaluate ( "'2000-02-01'.AddMonths(1).Month()" , 0 ) ;
260+ assert . equal ( dt , 3 ) ;
261+
262+ dt = engine . TryEvaluate ( "'2000-02-01'.AddDays(1).Day()" , 0 ) ;
263+ assert . equal ( dt , 2 ) ;
264+
265+ dt = engine . TryEvaluate ( "'2000-02-01 12:05:06'.AddHours(1).Hour()" , 0 ) ;
266+ assert . equal ( dt , 13 ) ;
267+
268+ dt = engine . TryEvaluate ( "'2000-02-01 12:05:06'.AddMinutes(1).Minute()" , 0 ) ;
269+ assert . equal ( dt , 6 ) ;
270+
271+ dt = engine . TryEvaluate ( "'2000-02-01 12:05:06'.AddSeconds(1).Second()" , 0 ) ;
272+ assert . equal ( dt , 7 ) ;
273+
274+ dt = engine . TryEvaluate ( "'2000-02-01 10:05:06'.AddSeconds(1).Second()" , 0 ) ;
275+ assert . equal ( dt , 7 ) ;
276+
277+ dt = engine . TryEvaluate ( "'2000-02-01 20:05:06'.AddSeconds(1).Second()" , 0 ) ;
278+ assert . equal ( dt , 7 ) ;
279+
280+ dt = engine . TryEvaluate ( "'2000-02-01 9:05:06'.AddSeconds(1).Second()" , 0 ) ;
281+ assert . equal ( dt , 7 ) ;
282+
283+ dt = engine . TryEvaluate ( "'7:05:06'.AddSeconds(1).Second()" , 0 ) ;
284+ assert . equal ( dt , 7 ) ;
285+
286+ dt = engine . TryEvaluate ( "'10:05:06'.AddSeconds(1).Second()" , 0 ) ;
287+ assert . equal ( dt , 7 ) ;
288+
289+ dt = engine . TryEvaluate ( "'20:05:06'.AddSeconds(1).Second()" , 0 ) ;
290+ assert . equal ( dt , 7 ) ;
291+
292+ // 错误
293+ dt = engine . TryEvaluate ( "'2000-02-01 24:05:06'.AddSeconds(1).Second()" , 0 ) ;
294+ assert . equal ( dt , 0 ) ;
295+ } ) ;
296+
297+ } ) ;
298+
299+
300+
0 commit comments