Python中的时间和日期计算非常灵活且强大,主要通过datetime
和time
模块来实现。以下是一些常用的时间和日期计算方法:
1. 获取当前时间
from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print("当前时间:", now)
# 获取当前日期
today = datetime.today()
print("当前日期:", today)
2. 时间格式化(字符串和日期格式互换)
日期格式转字符串:使用strftime()
方法可以将datetime
对象格式化为字符串。
# 创建datetime对象
date_ = datetime(2024, 5, 10, 15, 30) #
now_=datetime.now()
print(type(date_))
print(type(now_))
# 格式化输出
formatted_date = date_ .strftime("%Y-%m-%d %H:%M:%S") #可以格式化现在的时间 now_
formatted_now = now_ .strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期和时间:", formatted_date)
print(type(formatted_date))
字符串转日期格式:使用strptime()
方法可以将日期字符串解析为datetime
对象。
from datetime import datetime
# 日期字符串
date_string = "2024-04-10 15:30:00"
# 解析为datetime对象
parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("解析后的日期和时间:", parsed_date)
3. 修改日期格式统一化
date_string ='2023年7月14日'
new_date = date_string .replace("年", "-").replace("月", "-").replace("日", " ").replace("/", "-").strip()
print(new_date )
#结果:2023-7-14
4. 时间加减计算
可以通过直接对datetime
对象进行加减操作来计算新的时间点。
import datetime
# 加上10天
day_10 = datetime.date.today() + datetime.timedelta(10)
print("加上10天后的时间:", day_10 )
#昨天的计算
import datetime
yesterday = datetime.date.today() + datetime.timedelta(-1)
print(yesterday )
# 减去30分钟
now_time=datetime.datetime.now()
minus_30min=now_time - timedelta(minutes=30)
print("减去30分钟后的时间:", minus_30min)
#年龄的计算
init_year=1996 #设定一个初始日期
year_=datetime.datetime.now().year
age=year_-int(init_year) #整数型
print('今年的年龄是:',age)
5. 时间间隔计算
可以使用timedelta
对象来表示时间差,或者使用datetime
对象之间的差值来计算时间间隔。
from datetime import datetime, timedelta
# 创建两个datetime对象
start_time = datetime(2024, 5, 10, 8, 0)
end_time = datetime(2024, 5, 10, 17, 0)
# 计算时间间隔
time_diff = end_time - start_time
print("时间间隔:", time_diff)
print("总秒数:", time_diff.total_seconds())
print("天数:", time_diff.days)
print("小时数:", time_diff.seconds // 3600)
print("分钟数:", (time_diff.seconds // 60) % 60)
6. 时间戳的转换
time
模块提供了将datetime
对象转换为时间戳(自1970年1月1日以来的秒数)以及将时间戳转换回datetime
对象的功能。
当前时间转成时间戳类型:
import time
import datetime
t = time.time()
#print (t) #原始时间数据
#print (int(t)) #秒级时间戳 10位
#print (int(round(t * 1000))) #毫秒级时间戳 13位
#print (int(round(t * 1000000))) #微秒级时间戳 16位
time_= int(round(t * 1000))
print(time_)
时间戳转成时间:
import time
time_Num=1716364830123
time_Stamp = float(time_Num/1000) #位数参考上面
time_Array = time.localtime(time_Stamp )
time_stamp= time.strftime("%Y-%m-%d %H:%M:%S", time_Array )
print(time_stamp)
#2024-05-22 16:00:30
7. 休眠
使用time.sleep()
函数可以让程序暂停执行一段时间。
import time
# 休眠10秒
time.sleep(10)
print("程序继续执行")
8. 从文本中提取出日期
import re
text='2023-03-05的时间已经过了几年了'
#注:text='2012年3月3日' 这种类型不可以,要用replace_fromtext,然后再用这个
import datetime
def Not_none(n):
if n != None:
return n
match = re.search(r'\d{4}-\d{2}-\d{2}', text)
match1 = re.search(r'\d{4}-\d{2}-\d{1}', text)
match2 = re.search(r'\d{4}-\d{1}-\d{2}', text)
match3 = re.search(r'\d{4}-\d{1}-\d{1}', text)
time_=list(filter(Not_none, [match, match1, match2, match3]))[0]
date_ = datetime.datetime.strptime(time_.group(),'%Y-%m-%d').date()
print( date_ )
#2023-03-05
这些是Python中进行时间和日期计算的一些基本方法。通过这些工具,我们可以轻松地处理各种时间和日期相关的任务。
PS:处理时间和日期时要注意时区问题,如果需要处理不同时区的数据,可能需要使用第三方库如pytz
来确保准确性。
以及在测试的时候,由于我们调用的包是time,尽可能我们在命名对象的时候避免取名time,以免运行出错!