1. datetime
datetime是Python中用于处理日期和时间的类,它包含在datetime模块中。使用datetime类,我们可以创建表示特定日期和时间的对象,以及进行日期和时间的计算和操作。
from datetime import datetime, timedelta
# 获取当前日期和时间
current_datetime = datetime.now()
print("当前日期和时间:", current_datetime)
# 创建一个特定的日期和时间对象
specific_datetime = datetime(2023, 11, 27, 12, 30, 0)
print("特定的日期和时间:", specific_datetime)
# 提取日期和时间的各个部分
print("年份:", specific_datetime.year)
print("月份:", specific_datetime.month)
print("日期:", specific_datetime.day)
print("小时:", specific_datetime.hour)
print("分钟:", specific_datetime.minute)
print("秒:", specific_datetime.second)
2.strftime是Python中用于将日期和时间格式化为字符串的方法。它可以将datetime对象中的日期和时间按指定的格式转换为字符串。
from datetime import datetime
# 获取当前日期和时间
current_datetime = datetime.now()
# 将日期和时间格式化为字符串
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期和时间:", formatted_datetime)
# 提取日期和时间的各个部分并进行格式化
formatted_year = current_datetime.strftime("%Y")
formatted_month = current_datetime.strftime("%m")
formatted_day = current_datetime.strftime("%d")
formatted_hour = current_datetime.strftime("%H")
formatted_minute = current_datetime.strftime("%M")
formatted_second = current_datetime.strftime("%S")
print("格式化后的年份:", formatted_year)
print("格式化后的月份:", formatted_month)
print("格式化后的日期:", formatted_day)
print("格式化后的小时:", formatted_hour)
print("格式化后的分钟:", formatted_minute)
print("格式化后的秒数:", formatted_second)
以上代码会输出类似以下的结果:
格式化后的日期和时间: 2023-11-27 02:18:55
格式化后的年份: 2023
格式化后的月份: 11
格式化后的日期: 27
格式化后的小时: 02
格式化后的分钟: 18
格式化后的秒数: 55
通过使用strftime,我们可以将datetime对象中的日期和时间按照指定的格式转换为字符串,从而满足特定的需求。在格式化字符串中,可以使用各种占位符来表示不同的日期和时间部分,如%Y表示四位数的年份,%m表示两位数的月份,%d表示两位数的日期,%H表示24小时制的小时,%M表示分钟,%S表示秒等等。具体的占位符可以根据需要进行组合使用。
2. timedelta
timedelta是Python中的一个类,用于表示时间间隔。它可以用来进行日期和时间的计算和操作。
在Python中,可以使用datetime模块来创建timedelta对象,并对其进行各种操作。
from datetime import datetime, timedelta
# 创建一个timedelta对象,表示1天的时间间隔
one_day = timedelta(days=1)
# 创建一个timedelta对象,表示2小时的时间间隔
two_hours = timedelta(hours=2)
# 获取当前时间
now = datetime.now()
# 计算两天后的日期
two_days_later = now + 2 * one_day
# 计算3小时前的时间
three_hours_ago = now - 3 * two_hours
# 计算两个日期之间的时间间隔
time_diff = two_days_later - three_hours_ago
# 输出结果
print("两天后的日期:", two_days_later)
print("三小时前的时间:", three_hours_ago)
print("时间间隔:", time_diff)
输出结果:
两天后的日期: 2023-11-29 02:16:40.000000
三小时前的时间: 2023-11-26 23:16:40.000000
时间间隔: 0:05:00
对日期和时间进行加减运算
one_day = timedelta(days=1)
one_week_later = current_datetime + timedelta(weeks=1)
one_day_ago = current_datetime - one_day
print("一周后的日期:", one_week_later)
print("一天前的日期:", one_day_ago)
工作中有需要根据用例编写自动化脚本
QUERY_TAG_LIST_8 = ["BYTE_AUTO_1","INT_AUTO_1","UINT_AUTO_1", "REAL_AUTO_1",
"BYTE_MAN_1","INT_MAN_1","UINT_MAN_1","REAL_MAN_1"]
now = datetime.now() # 获取当前时间
endtime = now.replace(minute=0, second=0, microsecond=0) # 将分钟、秒钟和微秒都设置为零
starttime = endtime-timedelta(days=1)
end_time = endtime.strftime("%Y-%m-%d %H:%M:%S,%f") # 格式化字符串,格式为"2023-7-14 20:00:02,000000"
start_time = starttime.strftime("%Y-%m-%d %H:%M:%S,%f")
# 采样查询--8个位号(4个秒变)前1天整点历史查询,频率:1小时一次
while start_time < end_time:
data11 = clt.C_Sample_Query_by_Count(
ip=test_ip,
tagName=QUERY_TAG_LIST_8,
isReverse=1,
dataCount=1200,
beginTime=start_time,
endTime=end_time
)
print(data11)
time.sleep(3600)
start_time += timedelta(hours=1)