【python基础】datetime模块的用法

  • 写在前面,本文基于python3.7版本datetime模块,参考文档为python 3.7 官网,只对常用部分做转义,不会深入太多,网上有多种多样的解析,这里虽有重复,但属自己理解学习。
1 datetime.date(year, month, day)
  • 简单型日期,包含属性: year, month, and day
# 一些常见用法
import time
from datetime import date
d1 = date.today()
d2 = date.fromtimestamp(time.time())
print(d1,'\t',d2)
# 这两个是等价的
2020-10-11 	 2020-10-11
# 获取年月日
print(d1.year)
print(d1.month)
print(d1.day)
2020
10
11
# 返回时间格式
print(d1.strftime('%d/%m/%y'))
print(d1.strftime('%A %d. %B %Y'))
11/10/20
Sunday 11. October 2020
日期格式中常用字符:
  • %A(%a):星期,小写是缩写
  • %B(%b):月份,小写是缩写
  • %w :以十进制数显示的工作日,其中0表示星期日,6表示星期六
  • %Y, %m, %d, %H, %M, %S :十进制数显示的年,月,日,时,分,秒
  • %j, %W:以补零后的十进制数表示的一年中的日序号,以十进制数表示的一年中的周序号(星期一作为每周的第一天)
# date.fromtimestamp(timestamp) ,参数timestamp为一个时间戳(时间戳纪是从格林威治时间1970年1月1日 00:00:00到当前的秒数)
print(time.time())
print(date.fromtimestamp(time.time()))
1602398525.0222356
2020-10-11
# date.weekday() 返回一个整数代表星期几,星期一为0,星期天为6
print(date(2020,10,11).weekday())
6
# date.replace(year=self.year, month=self.month, day=self.day),日期的替换
d = date(2020, 10, 11)
print(d.replace(day=10))
2020-10-10
# 官网计算距离特定事件天数的例子
import time
from datetime import date
today = date.today()
my_birthday = date(today.year, 6, 24)
if my_birthday < today:
    my_birthday = my_birthday.replace(year=today.year + 1)
time_to_birthday = abs(my_birthday - today)
print(time_to_birthday.days)
256
2 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
  • 表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔,精确到微秒

  • 只有 days, seconds 和 microseconds 会存储在内部。 参数单位的换算规则如下:

  • 1毫秒会转换成1000微秒。

  • 1分钟会转换成60秒。

  • 1小时会转换成3600秒。

  • 1星期会转换成7天。

  • days, seconds, microseconds 本身也是标准化的,以保证表达方式的唯一性,例:

  • 0 <= microseconds < 1000000

  • 0 <= seconds < 3600*24 (一天的秒数)

  • -999999999 <= days <= 999999999

# 输出时只有三个参数,days,seconds, microseconds, 其他的会自动换算,并不会有minutes,hours,weeks参数,如过调用,就会出错
from datetime import timedelta
delta = timedelta(
    days=50,
    seconds=27,
    microseconds=10,
    milliseconds=29000,
    minutes=5,
    hours=8,
    weeks=2
)
print(delta)
print(f'days:{delta.days}')
print(f'seconds:{delta.seconds}')
print(f'microseconds:{delta.microseconds}')
64 days, 8:05:56.000010
days:64
seconds:29156
microseconds:10
  • 支持的运算
t1 = timedelta(days=1,hours=2,minutes=3,seconds = 59)
t2 = timedelta(days=2,hours=4,minutes=4)
t3 = timedelta(hours=2)
t4 = timedelta(minutes=20)
# 各参数独立运算,然后换算
print(t1+t2)   
print(t2-t1)
print(t1*2)
print(t2/2)
print('{:-^10}'.format('-'))
# 如果是除以一个时间间隔,则返回的是一个浮点数值,单参数就返回的是单个参数单位,多参数返回最大参数值单位
print(t2/t3)
print(t2/t4)
print(t2/t1)
print('{:-^10}'.format('-'))
# 取余,返回一个 timedelta 对象;取整,返回整数部分
print(t2%t4)
print(t2%t1)
print(t2//t4)
print(t2//t1)
print('{:-^10}'.format('-'))
# 返回一个形如 [D day[s], ][H]H:MM:SS[.UUUUUU] 的字符串
print(str(t1))
3 days, 6:07:59
1 day, 2:00:01
2 days, 4:07:58
1 day, 2:02:00
----------
26.033333333333335
156.2
1.99746374108846
----------
0:04:00
1 day, 2:00:01
156
1
----------
1 day, 2:03:59
3 datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
  • 一个独立于任何特定日期的理想化时间,包含属性: hour, minute, second, microsecond 和 tzinfo。
  • 用法大多与timedelta相近,不做解析
4 datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
  • 日期和时间的结合,属性:year, month, day, hour, minute, second, microsecond, and tzinfo
  • year, month 和 day 必须输入
  • 用法大多与datetime.date相近,不做解析。
datetime.tzinfo目前基本用不上,略
关系图
  • object
    • timedelta
    • tzinfo
      • timezone
    • time
    • date
      • datetime

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值