Python 中 time 和 datetime 模块

理论知识

1、UTC 时间

UTC time Coordinated Universal Time,世界协调时,又称格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的local time,也就是本地时间,例如我们的北京时间。

2、时间戳

# '2008-02-21 17:58:33' 
1203587913.0

时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量 ,表现为一个 float 类型

3、时间元组

时间元组,共有九个元素组。时间戳和格式化时间字符串之间的转化必须通过时间元组才行,所以时间元组是 3 种时间表示的中心。

# '2008-02-21 17:58:33' 
time.struct_time(tm_year=2008, tm_mon=2, tm_mday=21, tm_hour=17, tm_min=58, tm_sec=33, tm_wday=3, tm_yday=52, tm_isdst=-1)

time 常用方法

import time


print("---------获取时间---------")
print(time.time()) # 获取当前时间戳
print(int(time.time()))
print(time.localtime()) # 获取本地时间元组
print(time.gmtime()) # 获取世界标准时间元组
#print(time.localtime(1574239905)) # 也是时间戳转时间元组
print(time.gmtime(1574239905)) # 如果传入了时间戳,就是把时间戳转换成时间元组

print("---------格式化时间---------")
print("------时间元组--->日期字符串------")
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 格式化当前时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # 格式化制定时间
print(time.strftime('%Y-%m-%d')) # '%y-%m-%d' 19-11-20
print(time.strftime('%H:%M:%S')) # 
print(time.strftime('%Y{y}%m{m}%d{d} %H{h}%M{f}%S{s}').format(y='年',m='月',d='日',h='时',f='分',s='秒')) # 解决中文报错问题

print("------日期字符串--->时间元组------")
print(time.strptime('2019-11-20 17:27:52', '%Y-%m-%d %H:%M:%S'))

print("------时间元组--->时间戳------")
print(time.mktime(time.localtime()))

输出

---------获取时间---------
1574243913.5221558
1574243913
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=20, tm_hour=17, tm_min=58, tm_sec=33, tm_wday=2, tm_yday=324, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=20, tm_hour=9, tm_min=58, tm_sec=33, tm_wday=2, tm_yday=324, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=20, tm_hour=8, tm_min=51, tm_sec=45, tm_wday=2, tm_yday=324, tm_isdst=0)
---------格式化时间---------
------时间元组--->日期字符串------
2019-11-20 17:58:33
2019-11-20 17:58:33
2019-11-20
17:58:33
20191120175833------日期字符串--->时间元组------
time.struct_time(tm_year=2019, tm_mon=11, tm_mday=20, tm_hour=17, tm_min=27, tm_sec=52, tm_wday=2, tm_yday=324, tm_isdst=-1)
------时间元组--->时间戳------
1574243913.0

datetime 常用方法

datetime 模块是 time 模块的进一步封装,对用户更加友好,在时间各属性的获取上回更加方便一些,当然,在效率上会略微低一些。datetime 模块的功能主要都几种在 datetime、date、time、timedelta、tzinfo 五个类中。这五个类功能如下表所示:

类名功能
date提供日期(年、月、日)的处理
time提供时间(时、分、秒)的处理
datetime同时提供对日期和时间的处理
timedelta两个 date、time、datetime 实例之间的时间间隔(时间加减运算)
tzinfo时区信息

这里只介绍比较常用的 datetime 类

类方法 / 属性名称描述
datetime.today()返回一个表示当前本期日期时间的 datetime 对象
datetime.now([tz])返回指定时区日期时间的 datetime 对象,如果不指定 tz 参数则结果同上
datetime.utcnow()返回当前 utc 日期时间的 datetime 对象
datetime.fromtimestamp(timestamp[, tz])根据指定的时间戳创建一个 datetime 对象
datetime.utcfromtimestamp(timestamp)根据指定的时间戳创建一个 datetime 对象
datetime.combine(date, time)把指定的 date 和 time 对象整合成一个 datetime 对象
datetime.strptime(date_str, format)将时间字符串转换为 datetime 对象
对象方法 / 属性名称描述
dt.year, dt.month, dt.day年、月、日
dt.hour, dt.minute, dt.second时、分、秒
dt.microsecond, dt.tzinfo微秒、时区信息
dt.date()获取 datetime 对象对应的 date 对象
dt.time()获取 datetime 对象对应的 time 对象, tzinfo 为 None
dt.timetz()获取 datetime 对象对应的 time 对象,tzinfo 与 datetime 对象的 tzinfo 相同
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])生成并返回一个新的 datetime 对象,如果所有参数都没有指定,则返回一个与原 datetime 对象相同的对象
dt.timetuple()返回 datetime 对象对应的时间元组
dt.utctimetuple()返回 datetime 对象对应的 utc 时间元组
dt.toordinal()返回日期是是自 0001-01-01 开始的第多少天
dt.weekday()返回日期是星期几,[0, 6],0 表示星期一
dt.isocalendar()返回日期是星期几,[1, 7], 1 表示星期一
dt.isoformat([sep])返回一个‘% Y-% m-% d
dt.ctime()等价于 time 模块的 time.ctime (time.mktime (d.timetuple ()))
dt.strftime(format)返回指定格式的时间字符串
now1 = datetime.datetime.now() # 获取当前时间
now2 = time.strftime('%Y-%m-%d %H:%M:%S')
print(now1)
print(now2)

now = datetime.datetime.now()
d1 = now - datetime.timedelta(hours=1) # 获取前一个小时
d2 = now - datetime.timedelta(days=1) # 获取前一天
print(now)
print(d1)
print(d2)

输出

2019-11-20 23:18:38.871579
2019-11-20 23:18:38
2019-11-20 23:18:38.871579
2019-11-20 22:18:38.871579
2019-11-19 23:18:38.871579
# datetime对象转换成时间戳
dt = datetime.datetime.now()
print(time.mktime(dt.timetuple()))
# 时间戳转换成datetime对象
sjc_time = time.time()
print(datetime.datetime.fromtimestamp(sjc_time))

输出

1574263122.0
2019-11-20 23:18:42.398782

python 日期校验

import time

def datetime_verify(date):
    """判断是否是一个有效的日期字符串"""
    try:
        if ":" in date:
            time.strptime(date, "%Y-%m-%d %H:%M:%S")
        else:
            time.strptime(date, "%Y-%m-%d")
        return True
    except Exception as e:
        print(e)
        return False

参考链接:

https://www.cnblogs.com/chenhuabin/p/10099766.html

https://www.jb51.net/article/164828.htm

https://blog.csdn.net/gymaisyl/article/details/90644222

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值