mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #30819 -- Fixed year determination in admin calendar widget for two-digit years.
Two-digit years in the range of [00, 68] are in the current century, while [69,99] are in the previous century, according to the Open Group Specification.
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							550357771b
						
					
				
				
					commit
					cf5d4701dc
				
			
							
								
								
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -285,6 +285,7 @@ answer newbie questions, and generally made Django that much better: | ||||
|     Eugene Lazutkin <http://lazutkin.com/blog/> | ||||
|     Evan Grim <https://github.com/egrim> | ||||
|     Fabrice Aneche <akh@nobugware.com> | ||||
|     Farhaan Bukhsh <farhaan.bukhsh@gmail.com> | ||||
|     favo@exoweb.net | ||||
|     fdr <drfarina@gmail.com> | ||||
|     Federico Capoano <nemesis@ninux.org> | ||||
|   | ||||
| @@ -159,7 +159,14 @@ function findPosY(obj) { | ||||
|                 year = date[i]; | ||||
|                 break; | ||||
|             case "%y": | ||||
|                 // A %y value in the range of [00, 68] is in the current | ||||
|                 // century, while [69, 99] is in the previous century, | ||||
|                 // according to the Open Group Specification. | ||||
|                 if (parseInt(date[i], 10) >= 69) { | ||||
|                     year = date[i]; | ||||
|                 } else { | ||||
|                     year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100; | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             ++i; | ||||
|   | ||||
| @@ -391,6 +391,10 @@ Miscellaneous | ||||
|   options on models in ``django.contrib`` modules that were formerly tuples are | ||||
|   now lists. | ||||
|  | ||||
| * The admin calendar widget now handles two-digit years according to the Open | ||||
|   Group Specification, i.e. values between 69 and 99 are mapped to the previous | ||||
|   century, and values between 0 and 68 are mapped to the current century. | ||||
|  | ||||
| .. _deprecated-features-3.1: | ||||
|  | ||||
| Features deprecated in 3.1 | ||||
|   | ||||
| @@ -55,6 +55,7 @@ QUnit.test('String.strptime', function(assert) { | ||||
|     assert.equal(firstParsedDate.getUTCMonth(), 1); | ||||
|     assert.equal(firstParsedDate.getUTCFullYear(), 1988); | ||||
|  | ||||
|     // A %y value in the range of [69, 99] is in the previous century. | ||||
|     var secondParsedDate = '26/02/88'.strptime('%d/%m/%y'); | ||||
|     assert.equal(secondParsedDate.getUTCDate(), 26); | ||||
|     assert.equal(secondParsedDate.getUTCMonth(), 1); | ||||
| @@ -67,6 +68,12 @@ QUnit.test('String.strptime', function(assert) { | ||||
|     assert.equal(thirdParsedDate.getUTCMonth(), 10); | ||||
|     assert.equal(thirdParsedDate.getUTCFullYear(), 1983); | ||||
|  | ||||
|     // A %y value in the range of [00, 68] is in the current century. | ||||
|     var fourthParsedDate = '27/09/68'.strptime('%d/%m/%y'); | ||||
|     assert.equal(fourthParsedDate.getUTCDate(), 27); | ||||
|     assert.equal(fourthParsedDate.getUTCMonth(), 8); | ||||
|     assert.equal(fourthParsedDate.getUTCFullYear(), 2068); | ||||
|  | ||||
|     // Extracting from a Date object with local time must give the correct | ||||
|     // result. Without proper conversion, timezones from GMT+0100 to GMT+1200 | ||||
|     // gives a date one day earlier than necessary, e.g. converting local time | ||||
|   | ||||
		Reference in New Issue
	
	Block a user