Python datetime 模块

获取当前日期和时间:

>>> from datetime import datetime
>>> print(datetime.now())
2019-07-18 15:16:55.283423

获取指定日期和时间

要指定某个日期和时间,我们直接用参数构造一个datetime

>>> from datetime import datetime
>>> print(datetime(1999,9,9,9,9,9))
1999-09-09 09:09:09
>>> print(datetime(1999,9,9))      
1999-09-09 00:00:00
>>> print(datetime(1999,9))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function missing required argument 'day' (pos 3)
# 获取指定时间,至少需要三个参数及年月日

datetime转换为timestamp

在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。

>>> from datetime import datetime
>>> datetime.now().timestamp()
1563434713.415836
>>> datetime(1999,9,9,9,9,9).timestamp()
936839349.0

timestamp转换为datetime

要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:

>>> from datetime import datetime
>>> datetime.fromtimestamp(936839349.0)
datetime.datetime(1999, 9, 9, 9, 9, 9)
>>> print(datetime.fromtimestamp(936839349.0))
1999-09-09 09:09:09
>>> print(datetime.utcfromtimestamp(936839349.0))
1999-09-09 01:09:09
# fromtimestamp    转化为本地时间,北京时间,UTC+8:00时区的时间
# utcfromtimestamp 转化为格林威治标准时间,UTC+0:00时区的时间

str转换为datetime

很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> cday = datetime.strptime('1999-9-9 09:09:09', '%Y-%m-%d %H:%M:%S')          
>>> print(cday)
1999-09-09 09:09:09

datetime转换为str

如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:

>>> from datetime import datetime
>>> print(datetime.now().strftime('%a, %b %d %H:%M'))
Thu, Jul 18 15:41
>>> print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
2019-07-18 15:42:21
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(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 当前时区的名称
%% %号本身

datetime加减

对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+-运算符,不过需要导入timedelta这个类:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2019, 7, 18, 15, 53, 18, 296842)
>>> now + timedelta(hours=10)
datetime.datetime(2019, 7, 19, 1, 53, 18, 296842)
>>> now + timedelta(days=-10)  
datetime.datetime(2019, 7, 8, 15, 53, 18, 296842)
>>> now + timedelta(days=2,hours=3)
datetime.datetime(2019, 7, 20, 18, 53, 18, 296842)
>>> now - timedelta(years=10) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'years' is an invalid keyword argument for __new__()
# timedelta 不能对年份进行加减

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值