我需要在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获取上周的日期。
如果日期为: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) 假设我有一个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的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) 我有一个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) 我使用控制台在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”?
我正在使用一个看起来像 Google 日历的应用程序,但有一个主要区别:事件不应与其他事件有交叉。这意味着没有两个事件可以共享相同的时间,即使是分钟粒度。这对于仅存储会议的日历特别有用,因为不可能同时参加两个会议。
就像 Google 日历一样,可以使用重复规则(例如,每个周五和周日上午 10 点到下午 13 点)创建事件。因此,我想仅使用rrules(python-dateutil 模块)来检测重叠事件,而不需要创建 N 个日期时间对象并检查每个对象的交集。
是否可以仅使用 rrules 来检测重叠日期?另一个库中是否已经实现了类似的功能?
python intersection interval-intersection python-datetime python-dateutil
我经常被 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) 我不太明白如何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?
我正在阅读文档的这一部分。但仍然不太了解负值的工作。请分享解释或相关文档链接。谢谢 :)
我有一个看起来像这样的数据框
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-datetime ×10
python ×8
python-3.x ×5
datetime ×4
pandas ×2
timedelta ×2
date ×1
heroku ×1
intersection ×1
mean ×1
mysql ×1
python-3.4 ×1
scrapy ×1