我正在尝试用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
我根据"print timenow"行的结果选择了时间格式,但它在所述第一个时间变量的第二个冒号处出现语法错误。
有人看到我做错了什么吗?
感谢
错误的原因是Python不知道如何解释00:00:00.00000
。它不是字符串,不是有效的数字文字(如5
或-3.6
),也不是变量名、函数名或关键字。所以Python就像"WTF你在对我做什么,伙计?!",然后摔倒了。
你需要对你的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!"
这应该可以工作。
import datetime
timenow = datetime.datetime.now().time()
print "%sn" % str(timenow)
if str(timenow) >= "00:00:00.00000" and str(timenow) <= "00:15:00.00000":
print "True"
你的代码出了什么问题?
无法将日期类型与字符串进行比较
如果在if语句中使用"and",则必须执行另一个条件
在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指出这一点。
"虽然这很有效,但它可能会让新用户认为所有对象都可以像这样进行字符串比较,但它不会像你想要的那样工作:("2013年12月"<"2013年11月")->True"-Tom Dalton