我正在尝试使用datetime模块做一些相当简单的事情:
import datetime
timenow = datetime.datetime.now().time()
print timenow
if timenow >= 00:00:00.00000 and <= 00:15:00.00000
#do some processing here
我根据&#39;打印时间&#39;的结果选择了我的时间格式。然而,它在第一个时间变量中的第二个冒号处抛出语法错误。
谁能看到我做错了什么?
由于
答案 0 :(得分:4)
错误的原因是Python不知道如何解释00:00:00.00000
。它不是字符串,它不是有效的数字文字(例如5
或-3.6
),它不是变量名,函数名或关键字。所以Python就像&#34; WTF你在为我做什么?!&#34;,并且摔倒。
你需要更好地使用Python。用你的意思给它一些帮助。你可以将这些东西变成字符串"00:00:00.00000"
,但是Python仍然不知道订购日期时间字符串的特殊规则 - 所以当你进行比较时,你可能会遇到问题。
更好的解决方案是永远不要担心时间看起来像一个字符串 - 所有你关心的是时间有几小时,几分钟,几秒和几微秒。特别是,你似乎只关心小时和分钟。
试试这个:
min_time = datetime.time(0,0)
max_time = datetime.time(0,15)
if min_time <= timenow <= maxtime:
print "Do stuff!"
答案 1 :(得分:2)
这应该有用。
import datetime
timenow = datetime.datetime.now().time()
print "%s\n" % str(timenow)
if str(timenow) >= "00:00:00.00000" and str(timenow) <= "00:15:00.00000":
print "True"
您的代码出了什么问题?
您无法将日期类型类型与字符串进行比较。
当您使用&#34;和&#34;在if语句中,你必须做另一个条件。
在if语句所在的行的末尾,您忘记添加:这是python语法的一部分。
您没有在想要比较日期时间的值周围加上引号。
确保您理解:
import datetime
timenow = datetime.datetime.now().time()
print timenow
# below u need to put 00:00:00.00000 in quotes.
if timenow >= 00:00:00.00000 and <= 00:15:00.00000 # you forgot to add : here
请问你是否不理解。
编辑:请注意,所有对象都不能像这样进行字符串比较。感谢Tom Dalton指出这一点。
&#34;虽然这有效,但它可能会让新用户认为所有对象都可以像这样进行字符串比较,但它不会像你想要的那样工作:(&#34; 2013年12月&# 34;&lt;&#13; 2013年11月&#34;) - &gt;真&#34; - Tom Dalton