python标准库之date和datetime模块

引用:https://blog.csdn.net/p9bl5bxp/article/details/54945920
菜鸟教程-Python 日期和时间

time模块

获取时间戳格式的时间

>>> time.time()
1586418585.5257692

获取struct_time格式的时间

>>> time.localtime()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=15, tm_min=53, tm_sec=39, tm_wday=3, tm_yday=100, tm_isdst=0)

获取字符串格式的时间(基本不用)

>>> time.ctime()
'Thu Apr  9 15:54:48 2020'
>>> time.asctime()
'Thu Apr  9 15:54:59 2020'

时间戳格式转struct_time格式时间

>>> time.localtime(1586418585.5257692)
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=15, tm_min=49, tm_sec=45, tm_wday=3, tm_yday=100, tm_isdst=0)

struct_time格式转时间戳格式时间

>>> st=time.localtime(1586418585.5257692)
>>> time.mktime(st)
1586418585.0

struct_time格式转字符串格式时间

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
'2020-04-09 16:00:17'

>>> time.strftime('%x %X', time.localtime())
'04/09/20 16:00:39'

字符串格式转struct_time格式时间

>>> s='2020-04-09 16:00:17'
>>> time.strptime(s,'%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=16, tm_min=0, tm_sec=17, tm_wday=3, tm_yday=100, tm_isdst=-1)

图解

时间格式转换
在这里插入图片描述

datetime模块

类之间的关系:

object
    date
        datetime
    time
    timedelta
    tzinfo
        timezone

datetime.date类

class datetime.date(year, month, day)

# 返回一个表示当前本地日期的date对象
>>> datetime.date.today()
datetime.date(2020, 4, 9)

>>> datetime.date.today().year
2020
>>> datetime.date.today().month
4
>>> datetime.date.today().day
9

# 返回‘YYYY-MM-DD’格式的日期字符串
>>> datetime.date.today().isoformat()
'2020-04-09'

# 返回指定格式的日期字符串,与time模块的strftime(format, struct_time)功能相同
>>> datetime.date.today().strftime('%x')
'04/09/20'

# 返回日期对应的time.struct_time对象
>>> datetime.date.today().timetuple()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=100, tm_isdst=-1)

# 根据跟定的时间戳,返回一个date对象
>>> datetime.date.fromtimestamp(1586419123.0)
datetime.date(2020, 4, 9)

datetime.time类

class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])

# 构造time对象
>>> t = time(20, 5, 40, 8888)
>>> t.hour
20
>>> t.minute
5
>>> t.second
40
>>> t.microsecond
8888


>>> t.isoformat()
'20:05:40.008888'
>>> t.strftime('%H%M%S')
'200540'
>>> t.strftime('%H%M%S.%f')
'200540.008888'

datetime.datetime类

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

# 返回一个表示当前本期日期时间的datetime对象
>>> datetime.datetime.now() # 可指定时区
datetime.datetime(2020, 4, 9, 16, 20, 6, 409636)
>>> datetime.datetime.today()
datetime.datetime(2020, 4, 9, 16, 20, 12, 703556)

# 根据指定的时间戳创建一个datetime对象
>>> datetime.datetime.fromtimestamp(1586419123.0)
datetime.datetime(2020, 4, 9, 15, 58, 43)

# 将时间字符串转换为datetime对象
>>> datetime.datetime.strptime('2020-04-09 16:00:17', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2020, 4, 9, 16, 0, 17)

# 获取datetime对象对应的date对象
>>> datetime.datetime.today().date()
datetime.date(2020, 4, 9)
# 获取datetime对象对应的time对象
>>> datetime.datetime.today().time()
datetime.time(16, 23, 28, 9313)

# 返回datetime对应的time.struct_time对象
>>> datetime.datetime.today().timetuple()
time.struct_time(tm_year=2020, tm_mon=4, tm_mday=9, tm_hour=16, tm_min=24, tm_sec=39, tm_wday=3, tm_yday=100, tm_isdst=-1)

# 返回固定格式的时间字符串
>>> datetime.datetime.today().isoformat()
'2020-04-09T16:25:35.846289'

# 返回指定格式的时间字符串
>>> datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
'2020-04-09 16:28:11'

图解

datetime.datetime类对时间戳与时间字符串进行转换
在这里插入图片描述

datetime.timedelta类

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

# 返回一个时间间隔对象,可以直接与datetime.datetime对象做加减操作
>>> datetime.timedelta(365)
datetime.timedelta(days=365)

>>> datetime.timedelta(365).total_seconds()  # 一年包含的总秒数
31536000.0
>>> dt = datetime.datetime.now()
>>> dt + datetime.timedelta(3)  # 3天后
datetime.datetime(2017, 2, 8, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(-3)  # 3天前
datetime.datetime(2017, 2, 2, 9, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3)  # 3小时后
datetime.datetime(2017, 2, 5, 12, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=-3)  # 3小时前
datetime.datetime(2017, 2, 5, 6, 39, 40, 102821)
>>> dt + datetime.timedelta(hours=3, seconds=30)  # 3小时30秒后  
datetime.datetime(2017, 2, 5, 12, 40, 10, 102821)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值