GMT时间和UTC时间区别:
http://www.malaoshi.top/show_1EF1TS4sSI6v.html
计算机中的时间
最早最成熟的计算机操作系统是unix,把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0。
在计算机中,“时间”实际上是数字,该数字是当前时间与1970年1月1日 00:00:00的 时间差,单位是秒。之后的时间是 正数,之前的时间是 负数。
计算机中都以此为标准
为什么以1970年1月1日 00:00:00为基准?
因为unix是1970年前后发布的
查看
import time
t = time.time()
print(t)
print(t/60/60/24/365)
datetime模块
datetime模块是处理日期、时间的模块。(还有其他关于日期时间的内置模块,以及第三方模块)
该模块有6个类:
- date 日期对象,常用的属性有year, month, day
- time 时间对象
- datetime 日期时间对象,常用的属性有hour, minute, second, microsecond
- datetime_CAPI 日期时间对象C语言接口
- timedelta 时间间隔,即两个时间点之间的长度
- tzinfo 时区信息对象
详细参看官方文档:
https://docs.python.org/3/library/datetime.html#module-datetime
感谢中文文档:
https://blog.csdn.net/cmzsteven/article/details/64906245
导入 datetime
使用前需要导入 datetime
import datetime
datetime类
初始化
datetime.datetime(year, month, day, hour=0, minute=0, second=0)
参数说明
- year:必须
- month:必须。1 <= month <= 12
- day:必须。
- hour:0 <= hour < 24
- minute:0 <= minute < 60
- second:0 <= second < 60
返回
datetime对象
today()
返回当前系统时间的datetime对象
>import datetime
>datetime.datetime.today()
now([tz])
返回当前系统时间的datetime对象,可以设置时区,不设置时区,同today()
>import datetime
>datetime.datetime.now()
#设置世界统一时间utc
>datetime.datetime.now(datetime.timezone.utc)
截止到发本文时,需要用第三方模块才能调用该方法设置时区
utcnow()
返回当前时间(世界统一时间utc)的datetime对象
>import datetime
#设置世界统一时间utc
>datetime.datetime.utcnow()
格式化成字符串
格式化符号如下:
%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
:当前时区的名称%%
:%号本身
strftime()
将datetime对象格式化(format)成字符串
>import datetime
>datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
解析成对象
strptime()
将字符串型的日期时间解析(parse)为datetime类对象
>import datetime
#将年月日格式化成datetime对象
>datetime.datetime.strptime('2018-01-03','%Y-%m-%d')
#将年月日时分秒格式化成datetime对象
> datetime.datetime.strptime('2018-01-03 11:23:38','%Y-%m-%d %H:%M:%S')
获取日期是 第几周、星期几
import datetime
#str 转datetime
s = '2021-1-5'
date_time = datetime.datetime.strptime(s,'%Y-%m-%d')
print (date_time)
#获取当前时间
# t_date=datetime.date.today()
# print (t_date)
#获取第几周
week = date_time.strftime("%W")
print("获取第几周:",week)
#获取星期几
week_day = date_time.strftime("%w")
print ("获取星期几:",week_day)
将一种格式的字符串格式化成另一种格式
将 Wed Mar 30 23:40:06 +0800 2022
格式化成 2022-03-30 23:40:06
解决思路:
将
Wed Mar 30 23:40:06 +0800 2022
解析成datetime
对象,解析格式:'%a %b %d %H:%M:%S %z %Y'
将 步骤1 中的
datetime
对象,格式化成'%Y-%m-%d %H:%M:%S'
格式
代码
import datetime
s='Wed Mar 30 23:40:06 +0800 2022'
datetimeObj=datetime.datetime.strptime(s,'%a %b %d %H:%M:%S %z %Y')
res=datetimeObj.strftime('%Y-%m-%d %H:%M:%S')
print(res)
timedelta
datetime.timedelta对象代表两个时间之间的 时间差,用于日期计算
初始化
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
参数说明:
仅支持天,秒和微秒(1毫秒=1000微秒)
参数可以是整数或浮点数,并且可以是正数或负数
total_seconds()
时间间隔的总秒数,浮点型
可能为负数,过去时间减去现在(未来)时间
.total_seconds()
返回值
间隔时长,单位:秒
10小时之后的时间:
t=datetime.datetime.today()+datetime.timedelta(hours=10)
print(t)
2018-07-10 23:14:00与现在时间的间隔是多少小时
oldtime=datetime.datetime.strptime("2018-07-10 23:14:00","%Y-%m-%d %H:%M:%S")
now=datetime.datetime.today()
d=now-oldtime
snd=d.total_seconds()
snd=math.ceil(snd)
hour=snd//60//60
print("间隔%d小时"%hour)