Skip to content

Commit f5b05de

Browse files
committed
feat(date): 添加时间戳转换功能并优化类型注解
- 新增 to_datetime 函数用于将时间戳转换为 datetime 对象 - 优化 timestamp 函数的参数类型注解,将 digits 改为必选参数 - 为 format 和 parse 函数添加 Optional 类型注解 - 更新 __init__.py 导出新增的 to_datetime 函数
1 parent e6e44be commit f5b05de

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

src/usepy/date/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
from .parse import parse
22
from .format import format
33
from .now import now
4-
from .timestamp import timestamp
4+
from .timestamp import timestamp, to_datetime
55

66
__all__ = [
77
"parse",
88
"format",
99
"now",
1010
"timestamp",
11+
"to_datetime",
1112
]

src/usepy/date/format.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from datetime import datetime
2+
from typing import Optional
23

34

4-
def format(dt: datetime, fmt=None) -> str:
5+
def format(dt: datetime, fmt: Optional[str] = None) -> str:
56
"""format date
67
78
Args:

src/usepy/date/parse.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from datetime import datetime
22
from itertools import chain
3+
from typing import Optional
34

45

5-
def parse(time_str: str, fmt=None) -> datetime:
6+
def parse(time_str: str, fmt: Optional[str] = None) -> datetime:
67
"""parse date
78
89
Args:

src/usepy/date/timestamp.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
from typing import Optional
33

44

5-
def timestamp(dt: Optional[datetime] = None, digits: Optional[int] = 10) -> int:
6-
"""
7-
get timestamp from datetime object
5+
def timestamp(dt: Optional[datetime] = None, digits: int = 10) -> int:
6+
"""get timestamp from datetime object
7+
8+
Args:
9+
dt (Optional[datetime], optional): datetime object. Defaults to None.
10+
digits (int, optional): timestamp digits, 10 or 13. Defaults to 10.
811
9-
:param dt: datetime object, default to current time
10-
:param digits: timestamp digits, 10 or 13, default to 10
11-
:return: integer timestamp
12+
Returns:
13+
int: integer timestamp
1214
"""
1315
if dt is None:
1416
dt = datetime.now()
@@ -19,3 +21,20 @@ def timestamp(dt: Optional[datetime] = None, digits: Optional[int] = 10) -> int:
1921
return int(dt.timestamp() * 1000)
2022
else:
2123
raise ValueError("timestamp digits must be 10 or 13")
24+
25+
26+
def to_datetime(ts: int) -> datetime:
27+
"""convert timestamp to datetime
28+
29+
Args:
30+
ts (int): timestamp, can be 10 or 13 digits
31+
32+
Returns:
33+
datetime: datetime object
34+
"""
35+
if len(str(ts)) == 13:
36+
return datetime.fromtimestamp(ts / 1000)
37+
elif len(str(ts)) == 10:
38+
return datetime.fromtimestamp(ts)
39+
else:
40+
raise ValueError("timestamp digits must be 10 or 13")

0 commit comments

Comments
 (0)