datetime 是Python处理日期和时间的标准库,用于获取日期和进行日期计算等;
Python 的日期相关的标准库比较多(略有杂乱),有 datetime, time, calendar,这是 python 长期发展过程中造成的问题。也有很好的第三方库来解决 python 日期库比较多并且功能略有重叠的问题。
datetime 库包括 date 日期,time 时间, datetime 日期和时间,tzinfo 时区,timedelta 时间跨度计算 等主要对象。
获取当前日期和时间:now = datetime.now()
日期戳和日期的区别,日期戳更加精确,日期只是年月日,根据需要使用,大多数情况下只需要日期即可;
Time 对于时间的处理更加精确,用时间戳的表达方式;
时间戳定义为格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,时间戳是惟一的。
In [7]:
# 显示今天日期
# 可以比较一下三种结果的差异
from datetime import datetime, date
import time
print(datetime.now())
print(date.today())
print(time.time())
In [3]:
# 各种日期时间类型的数据类型
print(type(datetime.now()))
print(type(date.today()))
print(type(time.time()))
In [2]:
# 连续运行显示时间戳,看看时间戳差了多少毫秒
# 因为电脑运行速度太快,没有意外的话,看到的时间都是一样的
for i in range(10):
print(time.time())
In [5]:
# 用 time() 来计时,算10万次平方,看看哪台电脑速度快
# 算是一个简单的性能检测程序
import time
a = time.time()
for i in range(100000):
j = i * i
b = time.time()
print('time:', b-a)
字符串转化为日期:datetime.strptime()
日期转换为字符串:datetime.strftime()
日期字符串格式,举例
cday1 = datetime.now().strftime('%a, %b %d %H:%M')
cday2 = datetime.now().strftime('%A, %b %d %H:%M, %j')
cday3 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
In [8]:
# 字符串转化为日期
dday = datetime.strptime('2017-1-2 18:19:59', '%Y-%m-%d %H:%M:%S')
print(dday)
print(type(dday))
print('\n')
In [9]:
# 日期转换为字符串
day1 = datetime.now().strftime('%Y, %W, %m %d %H:%M')
print(day1)
print(type(day1))
In [6]:
# 日期转换为字符串,各种格式
cday1 = datetime.now().strftime('%a, %b %d %H:%M')
cday2 = datetime.now().strftime('%A, %b %d %H:%M, %j')
cday3 = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(cday1)
print(cday2)
print(cday3)
In [8]:
# 格式化时间戳为本地的时间
print(time.localtime(time.time()))
print(time.localtime())
print(type(time.localtime(time.time())))
In [9]:
# 本地时间转换为字符串
t = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
print(t)
print(type(t))
In [10]:
# 日期计算
# timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
from datetime import timedelta
now = datetime.now()
now1 = now + timedelta(hours=-10)
print(now)
print(now1)
In [11]:
# 日期的各个变量的计算
now = datetime.now()
now1 = now + timedelta(hours=10, minutes=20, seconds=-10)
print(now)
print(now1)
In [13]:
from datetime import datetime
#日期格式转换
newyear = datetime.strptime('2021-01-01', '%Y-%m-%d')
#获取现在的时间
now = datetime.now()
#时间差
timedelta = newyear-now
print(timedelta.days)
In [ ]: