python datetime学习

Python中处理时间的模块datetime, 这个模块里包含的类也叫datetime,所以要使用需要先import

from datetime import datetime

获取当前日期和时间 datetime

datetime.now()  # 输出结果是当前的日期和时间 

timestamp是时间戳

以1970年1月1日 00:00:00 UTC+00:00为标准时间

timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00

其他地方的时间需要加上时区,如北京的时间如下:

timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00

 timestamp转换成时间时会自动转换到当地的时区

timestamp()方法可以把datetime类型转换成timestamp

datetime.now().timestamp  # 1429417200.0

 timestamp也可以转换成datetime, 通过datetime.fromtimestamp()方法

datetime.fromtimestamp(1429417200.0)  # 2015-04-19 12:20:00

 本地时间转换成UTC时间

本地时间是指系统设定时区的时间,例如北京时间是UTC+8:00时区的时间,而UTC时间指UTC+0:00时区的时间。

要使用tzinfo就需要引入timezone这个类

from datetime import timezong

比如:想到把北京时间转换成UTC时间

datetime.now().replace(tzinfo=timezone(timedelta(hours=8)))

 

 

timedelta()方法可以用来加减时间,参数可以是days, hours, ....

 

str转换为datetime

>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

datetime转换为str

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

 

实例:

假设你获取了用户输入的日期和时间如2015-1-21 9:01:30,以及一个时区信息如UTC+5:00,均是str,请编写一个函数将其转换为timestamp:

# _*_ coding:utf-8 _*_
from datetime import datetime, timedelta, timezone
import re


def to_timestamp(dt_str, tz_str):
dt = datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
tz = re.match(r'(UTC)([-+])([\d]+)', tz_str).groups()
if tz[1] == '-':
dtstamp = dt.replace(tzinfo=timezone(timedelta(hours=-int(tz[2]))))
else:
dtstamp = dt.replace(tzinfo=timezone(timedelta(hours=int(tz[2]))))
return dtstamp.timestamp()
print(dtutcstamp)
return dtutcstamp


# test
t1 = to_timestamp('2015-6-1 08:10:30', 'UTC+07:00')
assert t1 == 1433121030.0, t1

t2 = to_timestamp('2015-5-31 16:10:30', 'UTC-09:00')
assert t2 == 1433121030.0, t2
print('ok')

 

posted on 2018-03-29 17:23  永恒自由森林  阅读(322)  评论(0编辑  收藏  举报

导航