python求两个澳洲时间和中国时间差的澳洲时间和中国时间差差

背景描述数据分析中会遇到日期、时间的计算,主要包括以下几种情况:对2个日期进行时间差值的计算或与目标时长进行比较,如:计算天数(days)、小时数(hours)、分钟数(minutes),秒数(seconds)等对已知日期进行转换,增加或减少天数(days)、小时数(hours)等,如计算昨天的日期,半年后的日期等提取日期中的年份、月份和日子等信息本文主要针对问题1和问题2,关于问题3,请查看博文:“python提取年月日遇到的问题”(链接:添加链接描述)解决方法:对2个日期进行时间差值的计算:将日期都转换为datetime类 --》2个日期直接进行运算(如加减)–》对计算差值进行天数(days)和秒数(seconds)的提取对已知日期进行转换,如增加或减少(天/小时/分钟):使用timedelta()函数来解决示例代码(Python):1. 对2个日期进行时间差值的计算1.1 对直接输入的日期进行时间差计算import numpy as np
import pandas as pd
from datetime import *
# 输入2个日期
date1 = "2022.05.11 13:30:00"
date2 = "2022.05.10 12:00:00"
# 将输入的日期转换为“datetime.datetime”类型
# 由于日期的类型是字符串,因此不能直接进行计算,会报错
date1 = datetime.strptime(date1, "%Y.%m.%d %H:%M:%S")
date2 = datetime.strptime(date2, "%Y.%m.%d %H:%M:%S")
print(" date1:", date1, "\n" ,"date2:", date2)
print(" 2个日期的类型分别是:\n", type(date1), type(date2))
# 计算时间差:时间差的类型为“datetime.timedelta”类型
duration = date1 - date2
duration
# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
day = duration.days
hour = duration.seconds/3600
print("days:", day)
print("hours:", hour)
小结:由于计算的时间差需要精确到小时/分钟/秒等,因此需要将日期类型转换为“datetime.datetime类型”后进行计算。运算得到的时间差值,其类型为“datetime.timedelta”,包括2部分:days: 多少天,seconds: 多少秒。时间差值的提取:天数(days)= durations.days; 秒数(seconds)= durations.seconds,可根据提取出来的秒数再换算为多少小时或多少分钟。1.2 DataFrame的时间差计算import pandas as pd
from datetime import *
# 建立计算时间差的数据表(Dataframe)
li = [["2021-05-6 10:00:00", "2022-05-10 08:30:00"],
["2022-05-7 08:30:00", "2022-05-10 12:30:00"],
["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])
# 将数据数据转换为“datetime.datetime类型”
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df
# 计算时间差
df["duration"] = df.date2 - df.date1
# 对计算差值进行天数(days)和秒数(seconds)的提取,并将秒数转换为小时数
df["day"] = df.duration.map(lambda x: x.days)
df["hour"] = df.duration.map(lambda x: x.seconds/3600)
df
小结在Dataframe中用同样的方法也能计算出两列日期时间的差值,包括天数和小时数,并且跨年度的计算也是可以的日常工作中,可以使用提取出来的天数/小时数等与目标时长进行比较,建立效率评估指标(如:按时接收率%,商家正确揽收率%等)2. 对已知日期进行增减计算(天/小时/分钟):使用timedelta()函数来解决2.1 timedelta()函数的简介timedelta()函数的构造:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)对参数设定具体的值,达到计算的要求,如:设定:days=1 – 在原有时间上增加1天;设定:minutes=-30 – 在原有时间上减少30分钟2.2 timedelta()函数的使用# 1. timedelta()的基本用法
dt1 = datetime(2022, 5, 12, 8, 30, 0)
dt2 = dt1 + timedelta(days = 1)
dt3 = dt1 + timedelta(minutes = -30)
print("dt1:", dt1)
print("dt2:", dt2)
print("dt3:", dt3)
# 2. timedelta在dataframe中使用是,有广播的作用
li = [["2022-05-6 10:00:00", "2022-05-10 08:30:00"],
["2022-05-7 08:30:00", "2022-05-10 12:30:00"],
["2022-05-9 12:00:00", "2022-05-10 14:30:00"]]
df = pd.DataFrame(li, columns=["date1", "date2"])
df.date1 = df.date1.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df.date2 = df.date2.map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"))
df["var1"] = df.date1 + timedelta(hours=1)
df["var2"] = df.date2 + timedelta(days=30)
df

我要回帖

更多关于 澳洲时间和中国时间差 的文章

 

随机推荐