mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	Fix timezone issues with strftime (#5762)
* Fix timezone issues with strftime * Fix timezone adjustment * Fix bug
This commit is contained in:
		
							parent
							
								
									732e527401
								
							
						
					
					
						commit
						e454daf727
					
				| @ -56,7 +56,7 @@ export const formatUnixTimestampToDateTime = (unixTimestamp: number, config: Dat | ||||
| 
 | ||||
|     // use strftime_fmt if defined in config file
 | ||||
|     if (strftime_fmt) { | ||||
|       const strftime_locale = strftime.localizeByIdentifier(locale); | ||||
|       const strftime_locale = strftime.timezone(getUTCOffset(date, timezone)).localizeByIdentifier(locale); | ||||
|       return strftime_locale(strftime_fmt, date); | ||||
|     } | ||||
| 
 | ||||
| @ -114,3 +114,18 @@ export const getDurationFromTimestamps = (start_time: number, end_time: number | | ||||
|   } | ||||
|   return duration; | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Adapted from https://stackoverflow.com/a/29268535 this takes a timezone string and
 | ||||
|  * returns the offset of that timezone from UTC in minutes. | ||||
|  * @param timezone string representation of the timezone the user is requesting | ||||
|  * @returns number of minutes offset from UTC | ||||
|  */ | ||||
| const getUTCOffset = (date: Date, timezone: string): number => { | ||||
|   const utcDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60 * 1000)); | ||||
|   // locale of en-CA is required for proper locale format
 | ||||
|   let iso = utcDate.toLocaleString('en-CA', { timeZone: timezone, hour12: false }).replace(', ', 'T'); | ||||
|   iso += '.' + utcDate.getMilliseconds().toString().padStart(3, '0'); | ||||
|   const target = new Date(iso + 'Z'); | ||||
|   return  (target.getTime() - utcDate.getTime()) / 60 / 1000; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user