time_util

1 三种时间格式转换图

               +-----------+
               |struct_time| 结构化的时间
               +---^-------^
                / /       \ \ localtime(本地时区的 struct_time ---- time.localtime() # time.struct_time(tm_year=2020, tm_mon=2, tm_mday=22, tm_hour=12, tm_min=12, tm_sec=54, tm_wday=5, tm_yday=53, tm_isdst=0))
      strftime/ /     mktime\ \  gmtime (UTC 时区的 struct_time)
            / / strptime      \ \
    +-------V--+              +V--------+
    |format_str|              |timestamp| (time.time() # 时间戳:1582344742.146092)
    +----------+              +---------+
  格式化的字符串时间            时间戳

2 timestamp

2.1 当前时间戳

code

from xlib.util import time_util
print time_util.get_current_time()

1627539468

2.2 时间戳转为格式化的字符串

code

from xlib.util import time_util
print time_util.timestamp2time_str_with_format(1627479727, "%Y%m%d%H%M%S")

20210728214207

2.3 字符串转换为时间戳

code

# 2022年第10周的周一
time_util.time2timestamp_with_format("202210-1", "%Y%W-%w")
1646582400

# 2022年第10周的周日
time_util.time2timestamp_with_format("202210-0", "%Y%W-%w")
1647100800

%W:  周在当年的周数(是当年的第几周),星期一作为周的第一天
%w:  今天在这周的天数

3 ISO 8601 格式的 UTC 时间

%Y-%m-%dT%H:%M:%SZ
eg: 2023-06-16T17:08:50Z

3.1 当前时间转为 ISO 格式 UTC 时间

ef get_current_utctime_iso_format():
    """
    get cur utctime format
    """
    return time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())

3.2 ISO 格式 UTC 时间转为时间戳(毫秒)

from dateutil import parser
import calendar

# 原始时间字符串
time_str = "2023-06-16T17:08:50Z"

# 使用 dateutil.parser 解析时间字符串
utc_time = parser.parse(time_str)

# 确保时间是 UTC 的(dateutil.parser 通常能够正确处理带 Z 的时间字符串)
# 将 datetime 对象转换为 Unix 时间戳(秒,UTC)
unix_timestamp = calendar.timegm(utc_time.utctimetuple())

# 将 Unix 时间戳(秒)转换为毫秒时间戳
milliseconds_timestamp = int(unix_timestamp * 1000)

print("Original Time String:", time_str)
print("Milliseconds Timestamp:", milliseconds_timestamp)

Last updated