问题标签 [python-dateutil]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
821 浏览

python - 在 Python/dateutil 中将两个时间跨度除以彼此

请考虑这个问题:

我有一个过去的日期,我从那里开始添加句点。当添加这些期间导致日期大于今天时,我想停下来检查最后一个日期是什么。

这是计算会员借记日期的功能。一个成员加入,比如说,2007-01-31。他每个月都会被扣款。假设今天是 2013-03-29(实际上是 atm)。所以我需要从 2007 年 1 月 31 日开始计算月份,当我超过今天的日期时,我需要停止。然后我可以看到下一个借记日期是 2013-03-31。

我正在使用 dateutil 库来实现这一点,在 while 循环中添加 relativedelta,直到我超过当前日期。(我知道这可能不是最好的方法,但我对 Python 还是很陌生,这是一个概念验证)。问题是当我在 2007-01-31 中添加一个月时,下一个日期是 2007-02-28,这是正确的。但是下一次迭代的日期是 2007-03-28,因为 dateutil 不将 28 日识别为该月的最后一天,以保持其完整并迭代到 3 月的最后一天。当然,这是一个完全有效的实现。然后我尝试了 dateutils rrule 对象,但它具有相同的原理。它输出日期列表,但它只是跳过没有足够天数的月份。

然后我想到了另一种方法:

如果我可以计算 2007 年 1 月 31 日到 2013 年 3 月 29 日期间的时间段数,我可以将这些时间段数添加到开始日期,并且 dateutil 将返回正确的日期。
问题是这个时期并不总是一个月。例如,也可以是四个星期、一个季度或一年。

我找不到一种方法来获取一个 relativedelta 并将它与另一个 relativedelta 相除,以获得后者进入第一个的次数。

如果有人能指出我正确的方向,我将不胜感激。例如,是否有一个库可以做到这一点(相互划分时间跨度,并在给定的时间块内输出结果,如几个月或几周)?是否有一个 datediff 函数可以接受一个句点作为输入(例如,我知道在 vbscript 中,您可以在任何您想要的时间段内获得两个日期之间的差异,无论是几周、几个月、几天等等)。可能有完全不同的解决方案吗?

为了完整起见,我将包含代码,但我认为文本已经解释了这一切:

谢谢,

埃里克

编辑:我现在有一个解决方案可以做它应该做的,但它几乎不是 Pythonic、优雅或快速的。所以问题仍然是一样的,如果有人能提出更好的解决方案,请这样做。这是我想出的:

0 投票
2 回答
40774 浏览

python - Python新手 - PIP /无效语法错误

好的,完全是编程和 python 的新手。运行 Windows 7,python 2.7 x64。我正在尝试dateutil使用pip.

我安装了pip, numpyand pandas... ,因为它们是exe文件,所以非常简单。

我现在正在尝试使用pip来安装dateutil. 在 Python Shell 中,我输入了:

我继续"Invalid Syntax"在安装命令中遇到错误。我在这里做错了什么?我也在 python 命令行中尝试过这个。

我已经检查了我安装的模块,并且我同时拥有pipeasy_install. 现在真的很困惑......我也尝试过运行安装脚本dateutil,但我收到了这个错误:

请帮忙!提前感谢您的帮助。

0 投票
2 回答
270 浏览

python - 未来的规则,但相对于今天早上

我正在尝试计算符合一些简单规则的下一个时间点。

仅包括列表中提到的工作日(在下面的示例中,周一至周五)。仅返回列出的时间(12:00、18:00)。

After从提供的日期开始,我想得到第一个这样的观点。

我已经做到了这一点,但它正在返回一个“未取整”时间,这似乎是与当前时间的恒定偏移

这目前正在返回2013-05-01 18:53:39+01,这似乎与当前时间有关。

有人能告诉我如何让规则使用相对于午夜的时间但在之后返回日期After吗?

所需输出的明确示例

0 投票
1 回答
270 浏览

python - dateutil 中的解析器无法正确呈现小时

也许我遗漏了一些明显的东西,但有谁知道为什么 dateutil 的解析器无法正确呈现下一小时?(小时应该是 20 而不是 0。)

添加一个T

添加ignoretz

尝试不同的时间:

0 投票
0 回答
1612 浏览

python - 在处理之前从规则中排除日历假期

我正在使用python-dateutil包中的rrule方法。我想创建一个可以忽略假日日历中的日期的规则。我知道 exdate() 方法,但这似乎只过滤了输出列表中的日期,只有它已经生成。

我想要做的不是省略 datetime(2013, 2, 28, 0, 0) 而是根据原始规则寻找下一个最佳日期,即在这种情况下 datetime(2013, 2, 27 , 0, 0)。有什么想法我能做到这一点吗?

0 投票
3 回答
5164 浏览

python - Elegant way to convert python datetime.timedelta to dateutil.relativedelta

Is there an elegant was to convert between relativedelta and timedelta?

The use case is getting user input ISO date. Python's isodate will return either isodate.duration.Duration or datetime.timedelta.

We need the features of relativedelta (per What is the difference between "datetime.timedelta" and "dateutil.relativedelta.relativedelta" when working only with days? -- it does more) so need to convert both these types to a relativedata.

0 投票
2 回答
4117 浏览

python - 使用 relativedelta 时如何将月份转换为天?

这是我的方法

当我调试时,我看到

尽管此信息是正确的,但我想知道 的数量days,因为天数从282 月变为306 月和318 月

我怎样才能做到这一点?dateutil库似乎没有提供一种方式

谢谢

0 投票
2 回答
3508 浏览

python - Python dateutil 解析器,忽略字符串的非日期部分

我正在使用 dateutil 来解析图片文件名并根据日期对其进行排序。由于不是我所有的图片都有元数据,dateutil 试图猜测将它们放在哪里。

我的大部分图片都是这种格式:2007-09-10_0001.jpg 2007-09-10_0002.jpg 等等...

我得到的回报是这样的:

现在我应该能够从下划线之后删除所有内容,但如果可能的话,我想要一个更强大的解决方案,以防我有其他格式的图片。我虽然模糊会尝试在字符串中找到任何日期并与之匹配,但显然不起作用......

有没有一种简单的方法可以让解析器找到任何看起来像日期的东西并在此之后停止?如果不是,那么强制解析器忽略下划线之后的所有内容的最简单方法是什么?或者一种使用忽略部分定义多种日期格式的方法。

谢谢!

0 投票
2 回答
1515 浏览

python - Django dateutil ISO 8601 没有“读取”属性错误

我在 Django 视图中将日期时间转换为 ISO 8601 以推送到 Facebook 页面事件。我已经尝试过datetime.strptime,但遵循了我选择的最佳建议:

eventdate 在我打印时在控制台中看起来像这样,2013-06-18 02:50:00但在我得到之前它没有得到任何进一步:

这可能是什么?谢谢

0 投票
4 回答
784 浏览

python - 如何将 .txt 数据文件中的值解释为时间序列

我有一个数据文件,其中包含如下值:

@ DD MM YYYY HH MN SS Hs Hrms Hma x Tz Ts Tc THmax EP S T0 2 Tp Hrms EPS

29 11 2000 13 17 56 2.44 1.71 3.12 9.12 11.94 5.03 12.74 .83 8.95 15.03 1.80 .86
29 11 2000 13 31 16 2.43 1.74 4.16 9.17 11.30 4.96 11.70 .84 8.84 11.86 1.80 .87

我使用以下内容获取数据:

这给了我一个 numpy.ndarray

我希望能够将前 0-5 列解释为时间戳 (DD:MM:YYY:HH:MN:SS),但这是我被难住的地方 - 似乎有一百万种方法可以做到这一点,我不知道什么是最好的。

我一直在研究 dateutil 和 pandas - 我知道我应该做一些非常明显的事情,但我不知所措。我应该先转换为 csv 格式吗?使用for循环以某种方式连接每行(cols 0-5)的值?

在此之后,我将根据时间戳/增量绘制来自其他列的值。

我对python完全陌生,所以任何指针表示赞赏:)