Python模块:time时间模块

一、时间模块转换图

在这里插入图片描述

二、时间模块转换举例

1.获取时间戳

python时间戳取整为10位,单位为s

import time

print(time.time())  # 1621235477.11

print(int(time.time()))  # 1621235477

2.休眠
程序停止运行x秒

time.sleep(3)

3.获取时间元组

#显示当前时间的时间元组
print(time.localtime())
print(time.localtime(time.time())) # 同time.localtime()

在这里插入图片描述

#显示一个小时前的时间元组
print(time.localtime(time.time()-3600))

在这里插入图片描述

# 显示utc时间的时间元组
print(time.gmtime())

在这里插入图片描述

4.时间元组与其他格式的相互转换

时间元组 → 格式化时间

time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
# 2021-05-17 15:17:32

格式化时间 → 时间元组

time.strptime('2021-05-17 15:17:32','%Y-%m-%d %H:%M:%S')

时间元组 → 时间戳

print(time.mktime(t)) # 1621235956.0

时间戳格式 → 时间元组

print(time.localtime(time.time())) # 获取时间戳
# time.struct_time(tm_year=2022, tm_mon=1, tm_mday=14, tm_hour=15, tm_min=1, tm_sec=24, tm_wday=4, tm_yday=14, tm_isdst=0)

例:

# --------------将时间戳转为格式化时间 
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) 
# 2023-05-09 17:39:5


# ------------将格式化时间转为时间戳
print(time.mktime(time.strptime('2023-05-09 17:39:54', '%Y-%m-%d %H:%M:%S')))
# 1683625194.0

三、一些时间处理的例子

1.从字符串中匹配 【年-月-日】

import re

def format_date(str):
    date = re.findall('\d{4}-\d{2}-\d{2}', str)
    if date:
        return date
    else:
        return '没有符合的时间格式'


a = '2020-08-06啊撒打算的啊2015-3-1 2005-03-21'
print(format_date(a))

结果:在这里插入图片描述

2.随机生成【时:分:秒】

import random


def get_random_time():
    H = str(random.randint(0, 24))
    M = str(random.randint(0, 60))
    S = str(random.randint(0, 60))
    random_time = [H, M, S]
    for i in range(0, len(random_time)):
        if len(random_time[i]) == 1:
            random_time[i] = '0' + random_time[i]
    time_ = ':'.join(random_time)
    return time_
    
print(get_random_time())

结果:在这里插入图片描述

3.处理此类形式:【2019-11-20T10:06:09+08:00】

处理为:(2020-03-21 15:02:36)

# 1.匹配时间2019-11-20T10:06:09+08:00
def verify_datetime(datetime_):
    pattern = r'((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$'
    if re.match(pattern, datetime_):
        return True


# 2.处理匹配到的时间
def format_date_tz(raw_date):
    date = raw_date.replace('T', ' ').replace('Z', '').split('+')[0]
    if not verify_datetime(date):
        raise ValueError(raw_date, date)
    return date

print(format_date_tz('2019-11-20T10:06:09+08:00'))

结果:

在这里插入图片描述

4.将2020年3月14日处理为【2020-03-14】

date = '2020年3月14日'


# 例如格式为2016年5月17日,月日可能不足两位的
def format_time(date):
    a = date.replace('年', '-').replace('月', '-').strip('日')
    b = a.split('-')
    for i in range(2):
        b[1] = b[1].zfill(2)  # 左填充
        b[2] = b[2].zfill(2)
    b = '-'.join(b)
    return b


print(format_time(date))

结果:在这里插入图片描述

5.获取【几天前/几月前/几周前/几年前】的时间

def get_date_ago(date):
    import datetime
    if date.find('月') != -1:
        month_ago = int(re.findall('(.*?)月', date)[0])
        date = datetime.date.today() - datetime.timedelta(days=int(month_ago * 30))
    elif date.find('天') != -1:
        day_ago = int(re.findall('(.*?)天', date)[0])
        date = datetime.date.today() - datetime.timedelta(days=int(day_ago))
    elif date.find('年') != -1:
        year_ago = int(re.findall('(.*?)年', date)[0])
        date = datetime.date.today() - datetime.timedelta(days=int(year_ago * 365))
    elif date.find('周') != -1:
        week_ago = int(re.findall('(.*?)周', date)[0])
        date = datetime.date.today() - datetime.timedelta(days=int(week_ago * 7))
    return date

print(get_date_ago('3天前'))
print(get_date_ago('3周前'))
print(get_date_ago('3月前'))
print(get_date_ago('3年前'))

结果:在这里插入图片描述

6.处理英文月份和固定格式的格式

符号含义
%y两位数的年份表示(00-99)
%Y四位数的年份表示(0000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%I12小时制小时数(01-12)
%M分钟数(00-59)
%S秒(00-59)
%a本地简化星期名称
%A本地完整星期名称
%b本地简化的月份名称
%B本地完整的月份名称
%c本地相应的日期表示和时间表示
%j年内的一天(001-366)
%p本地A.M.或P.M.的等价符
%U一年中的星期数(00-53)星期天为星期的开始
%w星期(0-6),星期天为星期的开始
%W一年中的星期数(00-53)星期一为星期的开始
%x本地相应的日期表示
%X本地相应的时间表示
%Z当前时区的名称
%%%号本身
def format_Date1(date):
    import datetime
    time_format = str(datetime.datetime.strptime(date, '%b %d, %Y, %H:%M:%S'))
    return time_format


print(format_Date1('Dec 4, 2019, 4:25:41'))

结果:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张烫麻辣亮。

谢谢老板,祝你生8个儿子!

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

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

打赏作者

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

抵扣说明:

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

余额充值