Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从午夜开始获得秒数_Python_Date_Datetime - Fatal编程技术网

在Python中从午夜开始获得秒数

在Python中从午夜开始获得秒数,python,date,datetime,Python,Date,Datetime,我想得到从上个午夜起过期的秒数。Python中最优雅的方式是什么?我会这样做: import datetime import time today = datetime.date.today() seconds_since_midnight = time.time() - time.mktime(today.timetuple()) 或 选择哪一个取决于口味。最好对返回当前日期/时间的函数进行一次调用: from datetime import datetime now = datetim

我想得到从上个午夜起过期的秒数。Python中最优雅的方式是什么?

我会这样做:

import datetime
import time

today = datetime.date.today()
seconds_since_midnight = time.time() - time.mktime(today.timetuple())


选择哪一个取决于口味。

最好对返回当前日期/时间的函数进行一次调用:

from datetime import datetime

now = datetime.now()
seconds_since_midnight = (now - now.replace(hour=0, minute=0, second=0, microsecond=0)).total_seconds()
或者

datetime.now() - datetime.now()

为这里的任何人返回零时间增量?

您尝试过这样做吗?你能和我们分享一些代码吗?(我确信落选的人就是因为这个…)事实上,我一直在寻找关于stackoverflow的问题,但没有找到答案。在查阅python文档之后,我找到了一个我喜欢的解决方案。为了帮助其他人解决同样的问题,我将我的解决方案发布为问答。但显然,人们不喜欢这样,尽管这一点在这里得到了推广,geoffspear、Levon、gnat、A5C1D2H2I1M1N2O1R2T1、gaige认为这不是一个真正的问题。我强烈反对。很难说出这里问的是什么。事实上,这很明显,别那么迂腐了。时间戳%86400怎么样?如果这是你问题的一部分,最好编辑你的问题,并将其添加到你的原始帖子中作为你的尝试。你的答案是唯一考虑到当地时区的答案(由于DST转换,其他答案可能很容易产生一个小时的错误)。
mktime()
也可能失败,请参见此处。:-)我们似乎几乎同时添加了它。虽然测试时发现我拼错了。另一种方法是:午夜。顺便说一句,如果今天有DST转换,任何不使用
mktime()
或等效值的答案都会失败。您也可以使用正确的时区实现。您应该使用timedelta.total_seconds()而不是.seconds。如果有一个非零的“天”组件,.seconds将不包括它,至少在Python3.8中是这样,为什么使用一个调用更好?否则你会得到“现在”是什么的两个概念。@Dirk-因为创建my
now
的瞬间就是我想要计算秒数的瞬间。如果您将
现在
放在一行,然后将
午夜
放在第二行(在纳米/微米/秒后执行),您的计算可能会出错。假设午夜发生在这段时间,只使用“import datetime”可以避免屏蔽代码中其他地方可能需要的其他datetime方法。当然,你必须使用datetime.datetime.now(),但至少它是明确的。@Dirk-now()-now()是17微秒的差异(在我的笔记本电脑上),但是datetime.now().minute+datetime.now().second/60——显然是一个相当合理的计算——将减少59秒,大约是350万次尝试中的一次。
from datetime import datetime

now = datetime.now()
seconds_since_midnight = (now - now.replace(hour=0, minute=0, second=0, microsecond=0)).total_seconds()
datetime.now() - datetime.now()