日期时间模块的语法无效



我正在尝试用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

相关内容

  • 没有找到相关文章

最新更新