python datetime 模块
datetime模块定义了下面这几个类:
- datetime.date:表示日期的类。常用的属性有year, month, day;
- datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
- datetime.datetime:表示日期时间。
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
- datetime.tzinfo:与时区有关的相关信息。
d=datetime.datetime.now() 返回当前的datetime日期类型
d.timestamp(),d.today(), d.year,d.timetuple()等方法可以调用
print(datetime.date.today())# 2021-02-15
timetuple把日期格式转换为元组时间显示
print(datetime.date.timetuple(datetime.date.today()))# time.struct_time(tm_year=2021, tm_mon=2, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=46, tm_isdst=-1)
datetime.date.fromtimestamp(322222) 把一个时间戳转为datetime类型
print(datetime.date.fromtimestamp(322222))# 1970-01-05
datetime类型 转换时间戳
from datetime import datetime# datetime格式 ---> 转换为时间戳格式
v1 = datetime.now()
val = v1.timestamp()
print(val)
# 1613475487.190326
import datetime
datetime.datetime.now() 打印本地当前时间
>>> print(datetime.datetime.now())2017-12-20 17:30:31.035954
获取当前本地utc时间
print(datetime.datetime.utcnow())# 2021-02-16 07:16:49.745282
时间戳直接转成日期格式
>>> print(datetime.date.fromtimestamp(time.time()))2017-12-20
时间戳转换成 年日月 小时分钟秒时间类型
print(datetime.datetime.fromtimestamp(123123))# 1970-01-02 18:12:03
把当前时间以指定的日期格式打印出来
>>> print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))2017-12-20 17:33:44
datetime.timedelta() 时间加减
显示当前时间+3天时间
print(datetime.datetime.now() + datetime.timedelta(days=3))2017-12-24 10:53:23.549693
显示当前时间 -3天时间
print(datetime.datetime.now() + datetime.timedelta(days=-3))2017-12-18 10:53:23.549693
当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(hours=3))2017-12-21 13:53:23.549693
当前时间+30分钟
print(datetime.datetime.now() + datetime.timedelta(minutes=30))2017-12-21 11:23:23.549693
datetime类型 加上 timedelta 类型 可以进行加减
# 时间的加减v2 = v1 + timedelta(days=140, minutes=5)
print(v2)
# datetime类型 + timedelta类型
datetime 支持两个 datetime 之间进行相减 获取他们之间的时间间隔
时间间隔获取什么维度都可以 支持三种
from datetime import datetime, timezone, timedeltav1 = datetime.now()
print(v1)
# 2021-02-16 19:12:37.251638
v2 = datetime.utcnow() # 当前UTC时间
print(v2)
# 2021-02-16 11:12:37.251638
# datetime之间相减,计算间隔时间(不能相加)
data = v1 - v2
print(data.days) # 0
print(data.seconds / 60 / 60) # 8
print(data.microseconds) # 0
1. data.days 以天为维度 他们之间相差多少天
2. data.seconds 以秒 为间隔单位
3.data.microseconds 以毫秒 为单位
时间 datetime 和datetime 之间不允许相加
只支持 datetime类型 - datetime类型
支持 datetime类型 比较 datetime类型
先做时间转换,再时间加减
import datetimetime = datetime.datetime.strptime("2021-02-11T07:59:28",'%Y-%m-%dT%H:%M:%S')
print(time )
print(datetime.timedelta(hours=8))
time = time + datetime.timedelta(hours=8)
print(time)
'''
2021-02-11 07:59:28
8:00:00
2021-02-11 15:59:28
'''
2021-02-11 07:59:28+ 8:00:00 加8小时
那就是等于 2021-02-11 15:59:28
自定义时间
c_time = (datetime.datetime.now())print(c_time.replace(year=2016,month=3,day=5,hour=5,minute=5,second=40))
2016-03-05 05:05:40.549693
时间替换
# 时间替换# 跳跃到2015年
print(datetime.datetime.now().replace(year=2015))
# 2015-02-15 23:47:57.637232
print(datetime.datetime.now().replace(year=2015, month=10, hour=1, minute=1))# 2015-10-15 01:01:28.160332
字符串格式时间转换 datatime格式时间
datetime.strptme("字符串格式时间","datetime时间格式指定的格式") %Y 年,%m,月份,%d,天
from datetime import datetime# 字符串格式的时间 ---> 转换为datetime格式时间
text = "2021-11-11"
v1 = datetime.strptime(text, '%Y-%m-%d') # %Y 年,%m,月份,%d,天。
print(v1)
# 2021-11-11 00:00:00
datetime时间格式 转换 字符串格式
strftime("时间格式化规则")
%Y-%m-%d %H:%M:%S
年 月 日 小时 分钟 秒
from datetime import datetime# datetime格式 ----> 转换为字符串格式
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val)
# 2021-02-16 19:32:09
获取某个指定时区时间
import datetime# 定义时区 东8区时间
tz = datetime.timezone(datetime.timedelta(hours=8))
v2 = datetime.datetime.now(tz=tz)
print(v2)
当涉及国际时区时,时区转换则会经常使用到,比如来尝试将刚才的UTC时间转换为本地时间。对于Python3.3+版本,可以这么做:
import datetimeutc_now = datetime.datetime.utcnow()
print(utc_now)
# 2021-02-16 13:30:16.291588
utc_now1 = utc_now.replace(tzinfo=datetime.timezone.utc)
print(utc_now1)
# 2021-02-16 13:30:16.291588+00:00
china_now = utc_now1.astimezone(tz=None)
print(china_now)
# 2021-02-16 21:30:16.291588+08:00 转换东八区时间
import datetime# 另外一种
utc_dt = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
print("utc", utc_dt)
cn_dt = utc_dt.astimezone(datetime.timezone(datetime.timedelta(hours=8)))
print("cn", cn_dt)
'''
utc 2021-02-16 13:47:44.793999+00:00
cn 2021-02-16 21:47:44.793999+08:00
'''
实际上只要datetime的对象存在,就可以使用astimezone的方法转换到任何一个时区
设置时区 需要导入pytz模块
生成时区
pytz.timezone("Asia/shanghai")
时间设置指定的时区
import datetimeimport pytz
# 设置时区
# 默认tz=None 默认没有时区 可以设置时区
print(datetime.datetime.now(tz=pytz.timezone("Asia/shanghai")))
# 2021-02-16 01:20:24.010195+08:00
import pytz....
#dt the datetime var
dt.replace(tzinfo=pytz.utc).astimezone(pytz.timezone('Asia/Shanghai'))
特别是在转换其他时区的时候。而对于更低版本的Python,则datetime.timezone可能压根就还没有。
因此更便捷的方法是借助 pyzt,下面就借助于它来实现时区转换:
from pytz import timezoneimport datetime
utc_now = datetime.datetime.utcnow()
tzchina = timezone('Asia/shanghai')
utc = timezone('UTC')
local_time = utc_now.replace(tzinfo=utc).astimezone(tzchina)
print(local_time)
# 2021-02-16 21:34:48.097325+08:00
from pytz import timezoneimport datetime
def datetime_as_timezone(date_time, time_zone):
tz = timezone(time_zone)
utc = timezone('UTC')
return date_time.replace(tzinfo=utc).astimezone(tz)
def datetime_to_str(date_time):
date_time_tzone = datetime_as_timezone(date_time, 'Asia/Shanghai')
return '{0:%Y-%m-%d %H:%M}'.format(date_time_tzone)
print(datetime_to_str(datetime.datetime.utcnow()))
# 2021-02-16 21:38
datetime 获取当前的本地日期和UTC日期:
# 从 datetime 中导入 datetime 模块。from datetime import datetime
utc_time = datetime.utcnow() # utcnow()获取世界标准时间。
print(f'1、UTC时间为:{utc_time}')
# 1、UTC时间为:2021-02-16 14:28:29.182597
local_time = datetime.now() # now() 获取本地时间。
print(f'1、本地时间为:{local_time}')
# 1、本地时间为:2021-02-16 22:28:29.182597
可以看出本地时间多于UTC世界标准时间8小时。
先把 utc_time 利用 replace(tzinfo=时区对象) 强制更改 时区属性:
from datetime import datetime, timezone, timedeltautc = timezone.utc
print(f'4、世界标准时区为:{utc}')
# 4、世界标准时区为:UTC
beijing = timezone(timedelta(hours=8))
print(f'1、北京时区为:{beijing}')
# 1、北京时区为:UTC+08:00
utc_time = datetime.utcnow() # 获取当前 UTC 时间
print(f'UTC时间为:{utc_time}')
# UTC时间为:2021-02-16 14:19:00.790664
local_time = datetime.now() # 获取当前本地时间
print(f'本地时间为:{local_time}')
# 本地时间为:2021-02-16 22:19:00.790664
utc = timezone.utc # 获取 UTC 的时区对象
utc_time = datetime.utcnow().replace(tzinfo=utc) # 强制转换加上 UTC 时区。此处敲黑板,需要特别注意。
# replace的tzinfo参数为时区对象,所以
# 也可以这样 replace(tzinfo=timezone(timedelta(hours=0))
print(f'1、强制更改后的UTC时间为:{utc_time}')
# 1、强制更改后的UTC时间为:2021-02-16 14:19:00.790664+00:00
time_beijing = utc_time.astimezone(beijing)
print('2、更改时区为北京后的时间:', time_beijing)
# 2、更改时区为北京后的时间: 2021-02-16 22:19:00.790664+08:00
print('3、获取时区信息:', time_beijing.tzinfo)
# 3、获取时区信息: UTC+08:00
注:astimezone()修改 时区 会对应的调整日期和时间。
replace(tzinfo=时区) 只是修改时区属性,不会修改日期和时间。
以上是 python datetime 模块 的全部内容, 来源链接: utcz.com/z/387353.html