风火编程--python时间模块datetime和time

本文详细介绍Python中datetime和time模块的时间处理方法,包括时间格式转换、时间戳操作、时间加减运算及特殊时间格式处理,如12小时制(AM/PM)的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python时间处理模块datetime和time

datetime格式与str的常规转换

将datetime格式转成字符串可以用str() 或者 strftime(t, “format”)
将字符串转回datetime必须使用strptime(t, “format”)
不能通过eval()进行转换.

其他情况

创建datetime

datetime.datetime(2019, 1,1, 1, 1, 1)

获取当天的最后时刻24:00:00

datetime.datetime.combine(datetime.date.tody(), datetime.time.max)

处理12小时(AM/PM)的方法
start_time = "2018-09-29-1点12分"
st = re.sub(r'[点分]', "", start_time).replace("下午", "PM").replace("上午", "AM")
# %p代表"AM"/"PM", %I代表小时(1-12)
stt = datetime.datetime.strptime(st, "%Y-%m-%d-%p-%I-%M")
    def format_time(self, t):
    try:
        if "min" in t:
            mins = t.strip("mins")
            publish_time = self.now - dt.timedelta(minutes=int(mins))
        # x小时
        elif "hr" in t:
            hrs = t.strip(" hrs")
            publish_time = self.now - dt.timedelta(hours=int(hrs))
        elif "Just now" in t:
            publish_time = datetime.now()
        else:
            # 昨天
            if t.startswith("Yesterday"):
                yesterday = self.now - dt.timedelta(days=1)
                yes_str = yesterday.strftime('%B %d')
                t = t.replace("Yesterday", yes_str)
            # 补年
            if not t.startswith("20"):
                year = datetime.now().year
                t = "{} {}".format(year, t)
            # 小时补足两位
            hour = re.findall(r' (\d+:)', t)
            if hour:
                hour = hour[0]
                publish_time = t.replace(hour, hour.rjust(3, "0"))
            else:
                publish_time = t + " at 00:00 AM"
            publish_time = datetime.strptime(publish_time, '%Y %B %d at %I:%M %p')

        pt_str = publish_time.strftime("%Y-%m-%d %H:%M:%S")
        return pt_str
    except:
        self.logger.error("时间转换异常,t is [{}]\n{}".format(t, traceback.format_exc()))
时间戳格式化
t_str = time.strftime('%Y-%m-%d %H:%M:%S',t_strap)
时间戳转换成datetime案例
def check_date(ot):
    """
    检验日期
    :param ot: 解析出来的日期字符串 2019/4/9 13:42:14
    :return: 是否满足日期条件, 满足True
    """
    ot = str(ot)
    r = pattern_dt.findall(ot)
    if r:
        s = r[0]
        t = s[0]
        for i in s[1:]:
            t += i.rjust(2, "0")
        publish = dt.datetime.strptime(t, "%Y%m%d%H%M%S")
    else:
        t = ot.replace(".", "")[:10]
        publish = dt.datetime.fromtimestamp(int(t))

    now = dt.datetime.now()
    if (now - publish).days > 3:
        return False
    return True

时间的加减运算变量

前一小时
now - timedelta(days=1)
上个月
now + relativedelta(months=-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值