Python中基础的时间操作

时间日期格式化符号

  1. %Y:年,4位数
  2. %y:年,2位数
  3. %m:月,2位数(01-12)
  4. %d:天,2位数(01-31)
  5. %H:24小时制小时(00-23)
  6. %M:分钟数(00-59)
  7. %S:秒数(00-59)
  8. %f:毫秒数

与java中常用的格式化方式(yyyy-MM-dd HH:mm:ss)有区别,特别是大写“M”和小写“m”。倒是跟MySQL中的格式化差不多。

时间的处理

python的时间处理,可使用内置的time模块,也可以使用datetime.datetime模块。

  1. 使用time模块,主要是对time.struct_time的实例进行操作
  2. 使用datetime.datetime模块,主要是对datetime.datetime的实例进行操作

获取当前时间

使用time

import time

# 直接使用localtime()得到的是格林威治时间,比北京时间晚8小时
# now = time.localtime()
# 先用time.time()得到时间戳,再使用localtime(),取得的时间是本地时间
now = time.localtime(time.time())
# 直接打印的话,是一个time.struct_time的实例
print(now)
# 格式化输出
print(time.strftime('%Y-%m-%d %H:%M:%S',now))

使用datetime

from datetime import datetime as dt

# 直接获取的就已经是北京时间
now = dt.now()
# 直接打印,已经很像一个格式化时间了,但是带有毫秒数
print(now)
# 格式化输出
print(now.strftime('%Y-%m-%d %H:%M:%S'))

时间戳操作

使用time

# 获取当前时间的时间戳
timestamp = time.time()
print('当前时间的时间戳:%s'%timestamp)

# 获取某时间的时间戳
one_time = time.localtime()
tiamstamp = time.mktime(one_time)

# 时间戳转时间
timestamp = 1607703000
t = time.localtime(timestamp)
print(time.strftime('%Y-%m-%d %H:%M:%S', t))

使用datetime

# 先取得时间,后获取时间戳
now = dt.now()
timestamp = dt.timestamp(now)

# 时间戳转时间
timestamp = 1607703000
t = dt.fromtimestamp(timestamp)
print(t)

取得年,月,日,时,分,秒

使用time

# 必须传参,不然取得的不是北京时间
now = time.localtime(time.time())
print('%s年'%now.tm_year)
print('%s月'%now.tm_mon)
print('%s日'%now.tm_mday)
print('%s时'%now.tm_hour)
print('%s分'%now.tm_min)
print('%s秒'%now.tm_sec)

使用datetime

now = dt.now()
print('%s年'%now.year)
print('%s月'%now.month)
print('%s日'%now.day)
print('%s时'%now.hour)
print('%s分'%now.minute)
print('%s秒'%now.second)

自定义时间

使用time

貌似不太好定义

使用datetime

# 自定义2020年1月2日 3点4分5秒
c_time = dt(2020,1,2,3,4,5)
print(c_time)

# 自定义2020年1月2日,默认0点0分0秒
# 至少要有年月日三个参数
# 年:1~9999
# 月:1~12
# 日:1~28[29,30,31],注意闰月和大小月
c_time = dt(2020,1,2)
print(c_time)

字符串与时间互转

使用time

str_time = '2020-12-12 12:12:12'

# 字符串转时间
t = time.strptime(str_time,'%Y-%m-%d %H:%M:%S')
print(t)

# 时间转字符串
str_time_2 = time.strftime('%Y-%m-%d %H:%M:%S', t)
print(str_time_2)

非官方解释:

  1. strptime: 貌似是str parse time的缩写,即:将字符串解析成时间,返回一个时间对象
  2. strftime: 貌似是str from time的缩写,即:从时间中取得字符串,返回一个字符串

使用datetime

str_time = '2020-12-12 12:12:12'

# 字符串转时间,使用的方法名称和time相同,但是返回的时间类型是datetime.datetime
t = dt.strptime(str_time,'%Y-%m-%d %H:%M:%S')
print(t)

# 时间转字符串的方法名称与time相同,但是用法有区别
str_time_2 = t.strftime('%Y-%m-%d %H:%M:%S')
print(str_time_2)

时间的加减操作

使用time

貌似不太好操作

使用datetime

datetime.timedelta用于表示时间间隔

from datetime import datetime as dt
from datetime import timedelta as 
  1. “日期时间”与“时间间隔”进行加减操作,得到一个新的“日期时间”
now = dt.now()
# 定义一个时间间隔:365天
one_year = td(days=365)
# 把这个时间间隔直接加到当前时间上
next_year = now + one_year
print(next_year)

# 定义一个间隔:1天23小时4分10秒
time_diff = td(days=1, hours=23,minutes=4,seconds=10)
next_time = now + time_diff
print(next_time)

next_time = now - time_diff
print(next_time)
  1. “日期时间”与“日期时间”相减,得到一个“时间间隔”
now = dt.now()
next_time = dt(2022,1,1)

time_diff = next_time - now
print(time_diff)

# 可得出两个时间的间隔天数
print(time_diff.days)
# 可得出两个时间的间隔秒数(不包括整天,就是凑不够一天的时间的秒数)
print(time_diff.seconds)

# 可得出两个时间的间隔总秒数,貌似没有直接获取小时,分钟的方法,得自己计算:(
print(time_diff.total_seconds())
  1. “时间间隔”与“时间间隔”进行加减操作,得到一个新的“时间间隔”
time_diff_a = td(days=1, hours=23,minutes=4,seconds=10)
time_diff_b = td(days=2, minutes=55,seconds=50)

# 相加
time_diff_c = time_diff_a + time_diff_b
print(time_diff_c)
print(type(time_diff_c))

# 相减
time_diff_d = time_diff_a - time_diff_b
print(time_diff_d)
  1. “日期时间”与“日期时间”相加,必须报错:)

小结

  1. datetime比time好用。
  2. python里时间日期相关类,既有time.struct_time,又有datetime.datetime,有点不习惯。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值