标签: python-datetime

在mysql中存储python timedelta值的最佳方法是什么?

我需要在mysql环境中存储正常运行时间。正常运行时间从几小时到一年以上不等。我正在考虑为MySQL使用DATETIME类型。我正在使用python,并且正常运行时间从

def convertdate(lastrestart):
   # now in datetime
   nowdt=datetime.now()

   # last_restarted in datetime
   lastrestarted_dt=datetime.strptime(lastrestart, "%Y-%m-%d %H:%M:%S")

   # timedelta in datetime! 
   uptimeInDT=nowdt-lastrestarted_dt

   #timedelta in seconds
   secondsUptime=uptimeInDT.seconds

   # string conversion wont work so much for a datetime field.
   print str(uptimeInDT)
Run Code Online (Sandbox Code Playgroud)

这是完成这项工作的最好方法吗?我可以使用其他解决方案吗?mysql中的SEC_TO_TIME()的范围较小,无法正常工作,并且从sec到datetime没有任何功能。也许我应该节省时间并习惯这一点。谢谢

python mysql datetime-format timedelta python-datetime

5
推荐指数
1
解决办法
2726
查看次数

使用Python获取上周日期?

我正在尝试使用python获取上周的日期。

如果日期为:2014年10月10日为

应该打印

10 OCT 2014, 09 OCT 2014, 08 OCT 2014, 07 OCT 2014, 06 OCT 2014, 05 OCT 2014, 04 OCT 2014
Run Code Online (Sandbox Code Playgroud)

我试过了:

today = (10 OCT 2014)

dates = [today + datetime.timedelta(days=i) for i in range(-4 - today.weekday(), 4 - today.weekday())]
print dates
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

exceptions.AttributeError: 'unicode' object has no attribute 'weekday'
Run Code Online (Sandbox Code Playgroud)

python datetime scrapy python-3.x python-datetime

5
推荐指数
1
解决办法
7115
查看次数

如何将天花板应用于pandas DateTime

假设我有一个pandas数据帧,其列值为datetime64[ns].

Out[204]: 
0   2015-03-20 00:00:28
1   2015-03-20 00:01:44
2   2015-03-20 00:02:55
3   2015-03-20 00:03:39
4   2015-03-20 00:04:32
5   2015-03-20 00:05:52
6   2015-03-20 00:06:36
7   2015-03-20 00:07:44
8   2015-03-20 00:08:56
9   2015-03-20 00:09:47
Name: DateTime, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法将它们转换成最后一分钟后的时间?即我想要以下内容:

Out[204]: 
0   2015-03-20 00:01:00
1   2015-03-20 00:02:00
2   2015-03-20 00:03:00
3   2015-03-20 00:04:00
4   2015-03-20 00:05:00
5   2015-03-20 00:06:00
6   2015-03-20 00:07:00
7   2015-03-20 00:08:00
8   2015-03-20 00:09:00
9   2015-03-20 00:10:00
Name: DateTime, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

我写了一个复杂的代码,首先将它们转换为字符串,然后提取它们的三个部分00:09:47,将它们转换为整数,然后除非最后一部分(秒)已经00,我将最后一部分(秒)00 …

python python-3.x python-datetime pandas

5
推荐指数
2
解决办法
1951
查看次数

为什么Python的datetime.utcnow()总是返回相同的微秒值?

我正在玩Python的datetime.datetime.utcnow()方法,我注意到微秒值始终是相同的.

>>> import datetime
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 20, 46, 42286)
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 20, 55, 505286)
>>> datetime.datetime.utcnow()
datetime.datetime(2015, 11, 16, 23, 21, 1, 552286)
Run Code Online (Sandbox Code Playgroud)

注意微秒值是如何总是286.为什么会这样?我该怎么做才能解决这个问题?

更多信息:time.time()也总是有286us.毫秒值很好.我认为这实际上是根本原因,因为我相信datetime.datetime.utcnow()会调用time.time().


这是一个简短的脚本,表明它不仅仅是运气:

import datetime, random, time

for wait_time in [random.random() for _ in range(10)]:
    time.sleep(wait_time)
    print("Waited {}, result {}".format(wait_time, datetime.datetime.utcnow()))
Run Code Online (Sandbox Code Playgroud)

结果:

Waited 0.6074311218736113, result 2015-11-16 23:35:24.603286
Waited 0.960317012489652, result 2015-11-16 23:35:25.563286
Waited 0.13555474339177553, result 2015-11-16 23:35:25.698286
Waited 0.6179213307667111, result 2015-11-16 23:35:26.315286
Waited 0.2872301475401443, result 2015-11-16 23:35:26.602286 …
Run Code Online (Sandbox Code Playgroud)

python datetime python-3.x python-datetime python-3.4

5
推荐指数
1
解决办法
656
查看次数

计算python datetime的平均值

我有一个datetime属性:

d = {
    'DOB': pd.Series([
        datetime.datetime(2014, 7, 9),
        datetime.datetime(2014, 7, 15),
        np.datetime64('NaT')
    ], index=['a', 'b', 'c'])
}
df_test = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

我想计算该属性的均值.运行mean()会导致错误:

TypeError:此dtype不允许减少操作'mean'

我也试过别处提出的解决方案.它不起作用运行那里提出的功能的原因

OverflowError:Python int太大而无法转换为C long

你会建议什么?上述数据帧的结果应相当于

datetime.datetime(2014, 7, 12).
Run Code Online (Sandbox Code Playgroud)

datetime mean python-3.x python-datetime pandas

5
推荐指数
2
解决办法
2280
查看次数

heroku python datetime不包括fromisoformat

我使用控制台在Heroku上运行以下代码:

~ $ python
Python 3.6.6 (default, Aug  1 2018, 21:10:15)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.fromisoformat("2015-06-06T17:23:54+10:00")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'fromisoformat'
>>>
Run Code Online (Sandbox Code Playgroud)

这在我的Mac上的Python 3.7.0上运行良好。

如何访问在Heroku下运行的“ fromisoformat”?

heroku python-3.x python-datetime

5
推荐指数
1
解决办法
1129
查看次数

检测重叠日期重复规则

我正在使用一个看起来像 Google 日历的应用程序,但有一个主要区别:事件不应与其他事件有交叉。这意味着没有两个事件可以共享相同的时间,即使是分钟粒度。这对于仅存储会议的日历特别有用,因为不可能同时参加两个会议。

就像 Google 日历一样,可以使用重复规则(例如,每个周五和周日上午 10 点到下午 13 点)创建事件。因此,我想仅使用rrules(python-dateutil 模块)来检测重叠事件,而不需要创建 N 个日期时间对象并检查每个对象的交集。

是否可以仅使用 rrules 来检测重叠日期?另一个库中是否已经实现了类似的功能?

python intersection interval-intersection python-datetime python-dateutil

4
推荐指数
1
解决办法
1908
查看次数

构建上周、本周和下周的日期数组

我经常被 Python 中关于日期的事情绊倒。在我的 web 应用程序中,我想显示一个日历三周的每一天:上周、当前周和下周,星期一表示一周的开始。

我目前处理这个问题的方法是退回日期,直到我到达星期一,然后再减去 7 天,然后加上 20 天以建立三周范围......但这感觉真的很笨拙。

Python 是否有周的概念,还是我必须手动将其调整为几天?

编辑:现在我把它编码出来,它不是太可怕,但我确实想知道是否有更好的东西,再次使用几周而不是几天的概念。

today = datetime.date.today()
last_monday = today - datetime.timedelta(days=today.weekday()) - datetime.timedelta(days=7)
dates = [last_monday + datetime.timedelta(days=i) for i in range(0, 21)]
Run Code Online (Sandbox Code Playgroud)

python datetime date python-datetime

4
推荐指数
1
解决办法
2985
查看次数

具有负值的 Python timedelta 对象

我不太明白如何datetime.timedelta解释否定论点。

正值:

>>> from datetime import timedelta
>>> d = timedelta(days=1,seconds=1,microseconds=1,milliseconds=1,minutes=1,hours=1,weeks=1)
>>> (d.days, d.seconds, d.microseconds)
>>> (8, 3661, 1001)
Run Code Online (Sandbox Code Playgroud)

这很简单。带有负值的类似示例如下所示:

>>> from datetime import timedelta
>>> d = timedelta(days=-1,seconds=-1,microseconds=-1,milliseconds=-1,minutes=-1,hours=-1,weeks=-1)
>>> (d.days, d.seconds, d.microseconds)
>>> (-9, 82738, 998999) 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,秒和微秒的推导如下:

  • 秒 = 86399 - (-60-3600-1)
  • 微秒 = 999999 - (-1-1000)

这样对吗?为什么天数等于 -9?

我正在阅读文档的这一部分。但仍然不太了解负值的工作。请分享解释或相关文档链接。谢谢 :)

python python-datetime

4
推荐指数
2
解决办法
7359
查看次数

AttributeError: 'TimedeltaProperties' 对象没有属性 'minute'

我有一个看起来像这样的数据框

df

[output]:
date        time
2020-02-28  00:30:45
2020-02-28  00:30:45
2020-03-09  00:21:06
2020-03-09  00:21:06
2020-03-09  00:21:06
Run Code Online (Sandbox Code Playgroud)

df.time.dtype

[output]: dtype('<m8[ns]')
Run Code Online (Sandbox Code Playgroud)

我想使用以下命令提取时间变量中的分钟数

df.time.dt.minute
Run Code Online (Sandbox Code Playgroud)

但相反,我有这个错误

AttributeError: 'TimedeltaProperties' object has no attribute 'minute'
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决这个问题吗?

python timedelta attributeerror python-datetime

4
推荐指数
1
解决办法
6643
查看次数