mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:32:43 +00:00 
			
		
		
		
	 a61424a62b
			
		
	
	
		a61424a62b
		
	
	
	
	
		
			
			Other engines don't give NaN if there is at least one digit after the dot for milliseconds. We were much stricter and required exactly three digits. But there is real world usage of different amounts of digits such as discord having three extra trailing zeros.
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| test("basic functionality", () => {
 | |
|     expect(Date.parse("2020")).toBe(1577836800000);
 | |
|     expect(Date.parse("2000-11")).toBe(973036800000);
 | |
|     expect(Date.parse("1980-06-30")).toBe(331171200000);
 | |
|     expect(Date.parse("1970-06-30T13:30Z")).toBe(15600600000);
 | |
|     expect(Date.parse("1970-01-01T00:00:59Z")).toBe(59000);
 | |
|     expect(Date.parse("1970-01-01T00:00:00.999Z")).toBe(999);
 | |
|     expect(Date.parse("2020T13:14+15:16")).toBe(1577829480000);
 | |
|     expect(Date.parse("2020T13:14-15:16")).toBe(1577939400000);
 | |
|     expect(Date.parse("2020T23:59Z")).toBe(1577923140000);
 | |
| 
 | |
|     expect(Date.parse("+020000")).toBe(568971820800000);
 | |
|     expect(Date.parse("-000001")).toBe(-62198755200000);
 | |
|     expect(Date.parse("+020000-01")).toBe(568971820800000);
 | |
|     expect(Date.parse("+020000-01T00:00:00.000Z")).toBe(568971820800000);
 | |
| 
 | |
|     expect(Date.parse(2020)).toBe(1577836800000);
 | |
| 
 | |
|     expect(Date.parse("+1980")).toBe(NaN);
 | |
|     expect(Date.parse("1980-")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-00T")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-00T15:15:")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-00T15:15:15.")).toBe(NaN);
 | |
|     expect(Date.parse("1980-5-30")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-30T13")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-30T13:4")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-30T13:40+")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-30T13:40+1")).toBe(NaN);
 | |
|     expect(Date.parse("1980-05-30T13:40+1:10")).toBe(NaN);
 | |
|     expect(Date.parse("1970-06-30T13:30Zoo")).toBe(NaN);
 | |
|     expect(Date.parse("2020T13:30.40:")).toBe(NaN);
 | |
| });
 | |
| 
 | |
| test("time clip", () => {
 | |
|     expect(Date.parse("+999999")).toBeNaN();
 | |
|     expect(Date.parse("-999999")).toBeNaN();
 | |
| });
 | |
| 
 | |
| test("extra micro seconds extension", () => {
 | |
|     expect(Date.parse("2021-04-30T15:19:02.937+00:00")).toBe(1619795942937);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.9370+00:00")).toBe(1619795942937);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.93700+00:00")).toBe(1619795942937);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.937000+00:00")).toBe(1619795942937);
 | |
| 
 | |
|     expect(Date.parse("2021-04-30T15:19:02.93+00:00")).toBe(1619795942930);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.9+00:00")).toBe(1619795942900);
 | |
| 
 | |
|     // These values are just checked against NaN since they don't have a specified timezone.
 | |
|     expect(Date.parse("2021-04-30T15:19:02.93")).not.toBe(NaN);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.9")).not.toBe(NaN);
 | |
| 
 | |
|     expect(Date.parse("2021-04-30T15:19:02.+00:00")).toBe(NaN);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.")).toBe(NaN);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.a")).toBe(NaN);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.000a")).toBe(NaN);
 | |
| 
 | |
|     expect(Date.parse("2021-04-30T15:19:02.937001+00:00")).toBe(1619795942937);
 | |
|     expect(Date.parse("2021-04-30T15:19:02.937999+00:00")).toBe(1619795942937);
 | |
| 
 | |
|     expect(Date.parse("2021-06-26T07:24:40.007000+00:00")).toBe(1624692280007);
 | |
|     expect(Date.parse("2021-06-26T07:24:40.0079999999999999999+00:00")).toBe(1624692280007);
 | |
|     expect(Date.parse("2021-04-15T18:47:25.606000+00:00")).toBe(1618512445606);
 | |
| });
 |