mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Patch #1646728: datetime.fromtimestamp fails with negative
fractional times. With unittest. Somebody please backport to 2.5.
This commit is contained in:
		
							parent
							
								
									d1287323ca
								
							
						
					
					
						commit
						2054ee9b6f
					
				
					 3 changed files with 18 additions and 0 deletions
				
			
		|  | @ -1425,6 +1425,15 @@ def test_insane_utcfromtimestamp(self): | |||
|             self.assertRaises(ValueError, self.theclass.utcfromtimestamp, | ||||
|                               insane) | ||||
| 
 | ||||
|     def test_negative_float_fromtimestamp(self): | ||||
|         # The result is tz-dependent; at least test that this doesn't | ||||
|         # fail (like it did before bug 1646728 was fixed). | ||||
|         self.theclass.fromtimestamp(-1.05) | ||||
| 
 | ||||
|     def test_negative_float_utcfromtimestamp(self): | ||||
|         d = self.theclass.utcfromtimestamp(-1.05) | ||||
|         self.assertEquals(d, self.theclass(1969, 12, 31, 23, 59, 58, 950000)) | ||||
| 
 | ||||
|     def test_utcnow(self): | ||||
|         import time | ||||
| 
 | ||||
|  |  | |||
|  | @ -404,6 +404,9 @@ Library | |||
| Extension Modules | ||||
| ----------------- | ||||
| 
 | ||||
| - Patch #1646728: datetime.fromtimestamp fails with negative | ||||
|   fractional times.  With unittest. | ||||
| 
 | ||||
| - Patch #1490190: posixmodule now includes os.chflags() and os.lchflags() | ||||
|   functions on platforms where the underlying system calls are available. | ||||
| 
 | ||||
|  |  | |||
|  | @ -3683,6 +3683,12 @@ datetime_from_timestamp(PyObject *cls, TM_FUNC f, double timestamp, | |||
| 		return NULL; | ||||
| 	fraction = timestamp - (double)timet; | ||||
| 	us = (int)round_to_long(fraction * 1e6); | ||||
| 	if (us < 0) { | ||||
| 		/* Truncation towards zero is not what we wanted
 | ||||
| 		   for negative numbers (Python's mod semantics) */ | ||||
| 		timet -= 1; | ||||
| 		us += 1000000; | ||||
| 	} | ||||
| 	/* If timestamp is less than one microsecond smaller than a
 | ||||
| 	 * full second, round up. Otherwise, ValueErrors are raised | ||||
| 	 * for some floats. */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum