如何将一个时间差对象(timedelta object)转换成日期时间对象(datetime object)?
我立即想到的是类似 datetime(0)+deltaObj
的方式,但那样并不太好……难道没有一个像 toDateTime()
这样的函数吗?
将时间差转换为日期时间没有意义,但从初始或起始日期时间中加减时间差是有意义的。
>>> import datetime
>>> today = datetime.datetime.today()
>>> today
datetime.datetime(2010, 3, 9, 18, 25, 19, 474362)
>>> today + datetime.timedelta(days=1)
datetime.datetime(2010, 3, 10, 18, 25, 19, 474362)
由于datetime表示一天内的时间,因此您的timedelta应该小于24小时(86400秒),即使timedelta不受此限制。
import datetime
seconds = 86399
td = datetime.timedelta(seconds=seconds)
print(td)
dt = datetime.datetime.strptime(str(td), "%H:%M:%S")
print(dt)
23:59:59
1900-01-01 23:59:59
date = "05/15/2020"
dt2 = datetime.datetime.strptime("{} {}".format(date, td), "%m/%d/%Y %H:%M:%S")
print(dt2)
2020-05-15 23:59:59
import time
import datetime
start_dt_obj = datetime.datetime.fromtimestamp(start_timestamp)
stop_dt_obj = datetime.datetime.fromtimestamp(stop_timestamp)
delta = stop_dt_obj - start_dt_obj
delta_as_time_obj = time.gmtime(delta.total_seconds())
print('The duration was {0}'.format(
time.strftime('%H:%M', delta_as_time_obj)
)
import datetime`enter code here
lastDownloadedDate = datetime.date(2022,8,4)
print('lastDownloadedDate: ', lastDownloadedDate)
fdate = lastDownloadedDate + datetime.timedelta(days=1)
fdate = datetime.datetime.strptime(str(fdate), "%Y-%m-%d")
fdate = datetime.date(fdate.year, fdate.month, fdate.day)
print('fdate: ', dt3)`
通过在 pandas.DataFrame
中转换一列的示例,改进 @sadpanduar 的 answer:
from datetime import timedelta
import time
def seconds_to_datetime(seconds, format='%Y-%m-%d %H:%M:%S'):
td = timedelta(seconds=seconds)
time_obj = time.gmtime(td.total_seconds())
return time.strftime(format, time_obj)
df = pd.read_csv(CSV_PATH)
df['TIMESTAMP_COLUMN'] = df['TIMESTAMP_COLUMN'].apply(seconds_to_datetime)
period['start_date'] = (self.start_date + timedelta(days=roundtrip_component.day-1)).strftime("%d/%m/%Y")
,但出现了错误:TypeError: must be str, not datetime.timedelta
。所以我猜在这种情况下将类型timedelta更改为date是有意义的。 - HuLu ViCa