【拿来即用】【如何用python在代码获取准确的实时时间,Unix时间戳和格式化时间】

本节内容:获取准确的实时时间

当服务器的时间没有校准时,我们直接使用time.time()或者datetime.datetime.now()获取到的时间,
就会和我们当前的时间不一致,从而导致时间不准确。

1、实现获取准确的Unix时间戳,

传入"2025-01-01 09:00:00"自动转化对应的Unix时间戳;
没有输入时,则返回实时时间对应的时间戳
import time
from datetime import timezone, timedelta, datetime


def unix_time(dt):
    """
    输入: dt="2023-07-02 13:57:00"
    输出 对应的Unix时间戳
    """
    if dt:
        ...
    else:
        SHA_TZ = timezone(
            timedelta(hours=8),  # 我们在东八区
            name='Asia/Shanghai',
        )
        # 协调世界时
        utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
        # 北京时间
        dt = utc_now.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S')
    # 转换成时间数组
    timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
    # 转换成时间戳
    timestamp = time.mktime(timeArray)
    return int(timestamp)

if __name__ == '__main__':
    print(unix_time("2023-07-02 13:57:00"))

2、输出格式化时间:‘%Y-%m-%d %H:%M:%S’

在这里插入图片描述

import time
from datetime import timezone, timedelta, datetime
def local_time(timestamp, dt_type=""):
    """
    :param timestamp: 时间戳
    :param dt_type: 是否要输出datetime类型的时间
    :return: 格式化后的时间字符串
    """
    SHA_TZ = timezone(
        timedelta(hours=8),
        name='Asia/Shanghai',
    )
    if timestamp:
        # 将时间戳转换为UTC时间
        utc_datetime = datetime.utcfromtimestamp(timestamp).replace(tzinfo=timezone.utc)
        # 设置时区
        dt = utc_datetime.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S')
    else:
        # 协调世界时
        utc_now = datetime.utcnow().replace(tzinfo=timezone.utc)
        if dt_type:
            utc_now = utc_now.astimezone(SHA_TZ)
            return utc_now
        dt = utc_now.astimezone(SHA_TZ).strftime('%Y-%m-%d %H:%M:%S')
    return dt

if __name__ == '__main__':
    print(unix_time("2023-07-02 13:57:00"))
    print(local_time(1688277420))

这里可以看到,时间相互转化是一致的.
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昂立的狼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值