File size: 797 Bytes
2eee82e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from datetime import timezone, timedelta
import re

def parse_timezone(tz_offset_str):
    """
    Parse a timezone offset string (e.g., '+07:00') and return a timezone object.
    
    Args:
        tz_offset_str (str): Timezone offset in format '[+-]HH:MM'
    
    Returns:
        timezone: A datetime.timezone object with the specified offset
    
    Raises:
        ValueError: If the timezone format is invalid
    """
    match = re.match(r'([+-])(\d{2}):(\d{2})', tz_offset_str)
    if not match:
        raise ValueError(f"Invalid timezone format: {tz_offset_str}")
    
    sign, hours, minutes = match.groups()
    hours, minutes = int(hours), int(minutes)
    if sign == '-':
        hours, minutes = -hours, -minutes
    
    return timezone(timedelta(hours=hours, minutes=minutes))