TelegramBot/modules/utils.py

41 lines
1.4 KiB
Python
Raw Normal View History

2023-09-25 00:47:09 +03:00
from datetime import datetime
from typing import Union
import pytz
2023-09-25 00:47:09 +03:00
def to_utc(date: datetime, timezone: Union[str, None] = None) -> datetime:
2024-05-30 18:47:23 +03:00
"""*DEPRECATED AND WILL BE REMOVED IN FUTURE RELEASES*
Move timezone unaware datetime object to UTC timezone and return it.
2023-09-25 00:47:09 +03:00
### Args:
* date (`datetime`): Datetime to be converted.
* timezone (`Union[str, None] = None`): Timezone name (must be pytz-compatible). Defaults to `None` (UTC).
### Returns:
* `datetime`: Timezone unaware datetime in UTC with timezone's offset applied to it.
"""
timezone = "UTC" if timezone is None else timezone
return (
pytz.timezone(timezone).localize(date).astimezone(pytz.utc).replace(tzinfo=None)
)
2023-09-25 00:47:09 +03:00
def from_utc(date: datetime, timezone: Union[str, None] = None) -> datetime:
2024-05-30 18:47:23 +03:00
"""*DEPRECATED AND WILL BE REMOVED IN FUTURE RELEASES*
Move timezone unaware datetime object to the timezone specified and return it.
2023-09-25 00:47:09 +03:00
### Args:
* date (`datetime`): Datetime to be converted.
* timezone (`Union[str, None] = None`): Timezone name (must be pytz-compatible). Defaults to `None` (UTC).
### Returns:
* `datetime`: Timezone unaware datetime in timezone provided with offset from UTC applied to it.
"""
timezone = "UTC" if timezone is None else timezone
return (
pytz.utc.localize(date).astimezone(pytz.timezone(timezone)).replace(tzinfo=None)
2023-09-25 00:47:09 +03:00
)