标签: timedelta

将 datetime 转换为 timedelta 以便可以添加它们

当减去两个datetime对象时,我理解结果是timedelta对象:

import datetime

AcDepart = 1900-01-01 18:00:00
AcArrival = 1900-01-01 07:00:00
ActualHours = AcDepart - AcArrival 
Run Code Online (Sandbox Code Playgroud)

然后我想从中减去两个其他date time对象的总和ActualHours

这是另外两个对象:

HrsEarly = 1900-01-01 02:00:00
HrsLate = 1900-01-01 00:30:00
Run Code Online (Sandbox Code Playgroud)

这是无法完成的等式:

UnCalcTime = ActualHours - (HrsEarly + HrsLate)
Run Code Online (Sandbox Code Playgroud)

这是错误:

UnCalcTime = ActualHours - (HrsEarly + HrsLate)
TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'
Run Code Online (Sandbox Code Playgroud)

所以,我显然不能添加datetime.datetime. 有谁知道我怎么能解决这个问题?可以timedelta加在一起吗?如果是这样,我该如何转换datetimetimedelta

任何帮助将不胜感激,因为我一直试图解决这个问题很长时间没有成功。

python datetime timedelta

10
推荐指数
1
解决办法
2万
查看次数

Python时间对象超过24小时

我有一段时间没有Linux,这个时间是hh:mm:sec,但是hh可能超过24小时.所以如果时间是1天12小时,那就是36:00:00.有没有办法采用这种格式并轻松制作时间对象?

我真正想做的是花费所需的时间,即36:00:00,以及它运行4:46:23的时间,并减去两个以获得剩余的时间.我认为时间delta可能是在Python中最方便的方法,但我也愿意接受其他建议.

谢谢.

python time timedelta

9
推荐指数
2
解决办法
4947
查看次数

Python:给定日期和工作日查找给定工作日下一次出现的日期

这有点难以解释,所以如果这没有多大意义,我会道歉.

我有一个程序,我正在做一些调度.其中一个设置是在某些日子每周运行一个任务.例如,每周一,周三和周五.

考虑当前任务安排在1/2/2012(即星期一)的示例,我已经有一堆代码工作到我知道下一个任务运行应该在1/2/2012之后的星期三.我需要做的就是计算周三(2012年1月4日)的实际日期.

我实际上将星期几作为date.weekday()的相应整数,所以在这种情况下我有2代表星期三.

什么是处理这样的事情的最佳方式?我觉得应该有一个相当简单的解决方案,但它不会浮现在脑海中.我正在考虑使用日历对象进行搜索以查找我想要的一周中的某一天,但这似乎有些过分.

python datetime timedelta

9
推荐指数
2
解决办法
4282
查看次数

如何在夏令时区添加每周时间点

我想在本地化日期时间对象中添加或减去周(或天或月或年).问题是,由于夏令时区,天真的方法将导致1小时的班次.

2014-03-27 12:00正好从冬季到夏季转换.如果我添加一个星期的时间值到这个日期本地化在欧洲/柏林时区,结果将是2014-04-03 13:00.我想在2014-04-03 12:00的同一小时.我找到了解决方案:

from datetime import datetime, timedelta
import pytz
my_tz = pytz.timezone("Europe/Berlin")

def add_relativedelta(date, delta):
    """
    Adds the given timedelta to the given date. Shifts in timezone offsets
    will be removed.
    """
    tz = date.tzinfo
    result = tz.normalize(date + delta)
    if result.utcoffset() != date.utcoffset():
        result = tz.normalize(date.utcoffset() - result.utcoffset() + result)
    return result

date = my_tz.localize(datetime(year=2014, month=3, day=27, hour=12, minute=0))
print """{} Original localized date (winter time)
{} One week later (summer time)
{} Date one week …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime timedelta dst

9
推荐指数
1
解决办法
2009
查看次数

使用Python在给定日期(舍入后一天)添加一个月

我想在给定日期添加一个月

import datetime
dt = datetime.datetime(year=2014, month=5, day=2)
Run Code Online (Sandbox Code Playgroud)

所以我应该得到

datetime.datetime(year=2014, month=6, day=2)
Run Code Online (Sandbox Code Playgroud)

但随着

dt = datetime.datetime(year=2015, month=1, day=31)
Run Code Online (Sandbox Code Playgroud)

我应该得到

datetime.datetime(year=2015, month=3, day=1)
Run Code Online (Sandbox Code Playgroud)

因为没有2015-02-31(而且我希望我的结果在一天之后回合)

有些月份有31天,有些月份有30天,有些是29天,有些是28天!

所以添加一个datetime.timedelta可能不是一个好的做法(因为我们不知道要添加的天数)

我注意到熊猫有一个有趣的概念 DateOffset

http://pandas.pydata.org/pandas-docs/stable/timeseries.html#dateoffset-objects

但我没有找到Month偏移,只是MonthBeginMonthEnd

我也看到这篇文章 如何使用datetime Python模块计算当前日期六个月的日期?

所以我试过dateutil.relativedelta但是

from dateutil.relativedelta import relativedelta
datetime.datetime(year=2015, month=1, day=31)+relativedelta(months=1)
Run Code Online (Sandbox Code Playgroud)

回报

datetime.datetime(2015, 2, 28, 0, 0)
Run Code Online (Sandbox Code Playgroud)

所以结果在前一天得到了结果.

是否有(干净)的方式来圆天之后

编辑:我给了一个例子,一个月要添加,但我也希望能够添加例如:2年零6个月(使用一个relativedelta(years=2, months=6))

python calendar timedelta pandas python-dateutil

9
推荐指数
1
解决办法
6748
查看次数

How to find the date n days ago in Python?

Good evening chaps,

I would like to write a script where I give python a number of days (let s call it d) and it gives me the date we were d days ago.

I am struggling with the module datetime:

import datetime 

tod = datetime.datetime.now()
d = timedelta(days = 50) 
a = tod - h 
Type Error : unsupported operand type for - : "datetime.timedelta" and 
"datetime.datetime" 
Run Code Online (Sandbox Code Playgroud)

Thanks for your help

datetime date timedelta python-2.7

9
推荐指数
4
解决办法
8485
查看次数

使用 timedelta 将 15 分钟添加到当前时间戳

标题说明了一切。我正在编写一个脚本来向 API 发出预定的 GET 请求。我想打印下一次 API 调用的时间,距上一次调用需要 15 分钟。

我非常接近,但一直遇到以下错误: TypeError: a float is required

这是我的代码:

import time, datetime
from datetime import datetime, timedelta

while True:
    ## create a timestamp for the present moment:
    currentTime = datetime.datetime.fromtimestamp(time.time()).strftime("%Y-%m-%d %H:%M:%S")
    print "GET request @ " + str(currentTime)

    ## create a timestamp for 15 minutes into the future:
    nextTime = datetime.datetime.now() + datetime.timedelta(minutes = 15)
    print "Next request @ " + str(datetime.datetime.fromtimestamp(nextTime).strftime("%Y-%m-%d %H:%M:%S")
    print "############################ DONE #############################"
    time.sleep(900) ## call the api every …
Run Code Online (Sandbox Code Playgroud)

python datetime timestamp typeerror timedelta

9
推荐指数
1
解决办法
2万
查看次数

Python Timedelta64 将天转换为月

我有一个 Pandas 数据框,其中有 2 列代表开始时间戳和结束时间戳:

start       end
2016-06-13  2016-07-20
Run Code Online (Sandbox Code Playgroud)

这些列的数据类型是datetime64[ns].

我现在想创建一个新列,显示月份的差异:

start       end         duration
2016-06-13  2016-07-20  1.1
Run Code Online (Sandbox Code Playgroud)

我尝试的是执行以下操作:

df['duration'] = df['end'] - df['start']
Run Code Online (Sandbox Code Playgroud)

结果如下:

start       end         duration
2016-06-13  2016-07-20  37 days 00:00:00.000000000
Run Code Online (Sandbox Code Playgroud)

然后我尝试执行以下操作:

df['duration'] = df['end'] - df['start']).dt.months
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误

AttributeError:“TimedeltaProperties”对象没有属性“months”

duration该列的数据类型是timedelta64[ns].

我怎样才能达到预期的结果?

python timedelta python-datetime

9
推荐指数
1
解决办法
1万
查看次数

删除 timedelta 对象中的天数

我在 pandas 中有一个列dataframe是在减去两次后创建的。我现在有一个timedelta这样的对象-1 days +02:45:00。我只需要删除 -1 天并希望它是02:45:00。有没有办法做到这一点?

python datetime timedelta pandas

9
推荐指数
1
解决办法
2万
查看次数

Pandas 的负时差

我通过减去较早的时间戳为较晚的时间戳得到了这个奇怪的结果:

pd.to_datetime('2021-05-21 06:00:00') - pd.to_datetime('2021-05-21 06:02:00')
Run Code Online (Sandbox Code Playgroud)

输出:

Timedelta('-1 days +23:58:00')
Run Code Online (Sandbox Code Playgroud)

预期输出:

Timedelta('-0 days 00:02:00')
Run Code Online (Sandbox Code Playgroud)

计算负时差的正确方法是什么?谢谢你!

python timestamp time-series timedelta pandas

9
推荐指数
2
解决办法
3692
查看次数