mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 18:54:14 +01:00 
			
		
		
		
	time_zone: Account for leap years
Protects against invalid hour offsets during transitions to years following leap years.
This commit is contained in:
		
							parent
							
								
									833306bf5e
								
							
						
					
					
						commit
						13755c0903
					
				| @ -35,11 +35,13 @@ std::string GetDefaultTimeZone() { | ||||
| 
 | ||||
| // Results are not comparable to seconds since Epoch
 | ||||
| static std::time_t TmSpecToSeconds(const struct std::tm& spec) { | ||||
|     const int year = spec.tm_year - 1; // Years up to now
 | ||||
|     const int leap_years = year / 4 - year / 100; | ||||
|     std::time_t cumulative = spec.tm_year; | ||||
|     cumulative = cumulative * 365 + spec.tm_yday; // Years to days
 | ||||
|     cumulative = cumulative * 24 + spec.tm_hour;  // Days to hours
 | ||||
|     cumulative = cumulative * 60 + spec.tm_min;   // Hours to minutes
 | ||||
|     cumulative = cumulative * 60 + spec.tm_sec;   // Minutes to seconds
 | ||||
|     cumulative = cumulative * 365 + leap_years + spec.tm_yday; // Years to days
 | ||||
|     cumulative = cumulative * 24 + spec.tm_hour;               // Days to hours
 | ||||
|     cumulative = cumulative * 60 + spec.tm_min;                // Hours to minutes
 | ||||
|     cumulative = cumulative * 60 + spec.tm_sec;                // Minutes to seconds
 | ||||
|     return cumulative; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user