Python-时间、日期处理

Python 常用时间的操作

  • time
  • datetime

1. time

  1. 获取当前的时间戳 time.time()
  2. 根据时间戳获取时间元组 time.localtime()
  3. 根据时间元组获取字符串时间 time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

1.1 获取当前的时间戳

import time
current_timastamp = time.time()
1558150946.8137608

1.2 将时间戳转换为字符串时间

1.2.1 获取时间元祖time.struct_time()

time.localtime() 参数默认为当前的时间戳 time.time(),可以指定的时间戳获取指定的时间元组

# 获取当前的时间元组
time.localtime()
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=11, tm_min=52, tm_sec=13, tm_wday=5, tm_yday=138, tm_isdst=0)
# 根据指定的时间戳获取指定时间元组
time.localtime(current_timastamp)
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=11, tm_min=42, tm_sec=26, tm_wday=5, tm_yday=138, tm_isdst=0)

1.2.2 将时间元祖转换为字符串时间

通过 time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) 转换为字符串时间。

time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
'2019-05-18 12:04:11'

1.2.3 总结:

timestamp ---> struct_time ---> string

1.3 将字符串时间转换时间戳

  1. time.strptime() 将字符串时间转换为时间元祖
  2. time.mktime() 时间元祖转换为时间戳

1.3.1 字符串时间转换为时间元祖

通过 time.strptime('str_time',"%Y-%m-%d %H:%M:%S") 获取时间元组 time.struct_time()

str_time = '2019-05-18 03:27:45'
# 获取时间元组
time.strptime(str_time,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=12, tm_min=17, tm_sec=18, tm_wday=5, tm_yday=138, tm_isdst=-1)

1.3.2 时间元祖转换为时间戳

通过 time.mktime(struct_time,"%Y-%m-%d %H:%M:%S") 转换为时间戳

time.mktime(time.strptime(str_time,"%Y-%m-%d %H:%M:%S"))
1558153038.0

总结:

  1. 将字符串转换为时间元组 time.strptime(str,fomart)
  2. 将时间元组转换为时间字符戳 time.mktime(struct_time)

1.3.3 time.localtime() 和 time.gmtime() 的区别

time.localtime(time.time())time.gmtime(time.time()) 的区别

time.localtime()
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=11, tm_min=56, tm_sec=52, tm_wday=5, tm_yday=138, tm_isdst=0)
# tm_hour = 11
time.gmtime()
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=18, tm_hour=3, tm_min=56, tm_sec=58, tm_wday=5, tm_yday=138, tm_isdst=0)
# tm_hour = 8

2 datetime

2.1 获取当前的时间日期对象

import datetime
d = datetime.datetime.now()
datetime.datetime(2019, 6, 14, 22, 37, 50, 634343)

2.2 将时间对象转换为字符串时间

from datetime import datetime
# 获取当前的时间日期
datetime.now()
datetime.datetime(2019, 5, 21, 9, 53, 28, 875595)
# 将当前的转换为字符串时间
datetime.now().strftime('%Y-%m-%d %H:%M:%S')
'2019-05-21 09:43:21'

2.3 将字符串时间转换为时间对象

# 字符串时间
time_string = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # '2019-05-23 11:22:36'

datetime.datetime.strptime(time_string,'%Y-%m-%d %H:%M:%S')
datetime.datetime(2019, 5, 23, 14, 31, 28)

3 将时间戳转为时间对象相互转换

3.1 将时间戳转换为时间对象

  • datetime.fromtimestamp(t)
t = time.time() # 1558404024.8977106
datetime.fromtimestamp(t)
datetime.datetime(2019, 5, 21, 10, 0, 24, 897711)

3.2 将时间对象转换为时间戳 timestamp()

  • t.timestamp()
t = datetime.now()
t.timestamp() 
1558404314.672059

3.3 获取前n分钟,天月的日期时间

# python datetime获取几分钟、小时、天之前的时间
print((datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y-%m-%d %H:%M"))

print((datetime.datetime.now() - datetime.timedelta(minutes=1)).strftime("%Y-%m-%d %H:%M"))

print((datetime.datetime.now() - datetime.timedelta(seconds=1)).strftime("%Y-%m-%d %H:%M"))

本文参考:

博主renpingsheng

博主清明-心若淡定

原文地址:https://www.cnblogs.com/Echo-O/p/11044775.html