现在我正在使用以下函数来计算这样的日期和时间(ymd),(hms)。我相信这样比较容易。
def getDayAsInt():
time = datetime.datetime.now()
year = time.strftime("%Y")
month=makeTimeTwoDigit(time.strftime("%m"))
day=makeTimeTwoDigit(time.strftime("%d"))
return year+month+day
def getTimeOfDay():
day=makeTimeTwoDigit(time.strftime("%d"))
hour=makeTimeTwoDigit(time.strftime("%H"))
minute=makeTimeTwoDigit(time.strftime("%M"))
second=makeTimeTwoDigit(time.strftime("%S"))
return hour+minute+second
我最初尝试过这样的事情:
'date': str(datetime.now()),
但是我遇到了一个更容易生成日期范围来查询它的问题。例如,如果今天是20140616,我可以简单地查询20140601和20140616之间的日期,因为生成所有可能的日期时间更难。这有意义吗?
Ex我想找出今天发生的事件,但是在dynamodb中存储日期时间字符串比较难以匹配(更多要匹配的东西)。
我想知道是否有更简单或更有效的方式?像那样打破日期和时间?我应该这样做:
year = time.strftime("%Y")
month=makeTimeTwoDigit(time.strftime("%m"))
day=makeTimeTwoDigit(time.strftime("%d"))
并且做到一线吗?我应该做time.strftime(“%Y%m%d”)?
答案 0 :(得分:1)
如果你在python中进行比较,一个更简单的解决方案是使用内置datetime
个对象和常规比较运算符,如<
和>
。
from datetime import datetime
dt_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
if datetime(2006, 6, 5, 0, 0, 0) <= dt_object < datetime(2006, 6, 6, 0, 0, 0):
# do something when date is anytime on June 5th, 2006
如果您必须在查询中进行比较,只要日期以ISO-8601格式存储,您就可以使用常规字符串比较。 ISO-8601的优点是按时间顺序排序相当于词法排序,即您可以将它们视为普通字符串。
使用ISO-8601格式的等效比较:
'2006-06-05T00:00:00Z' <= dt < '2006-06-06T00:00:00Z'
答案 1 :(得分:1)
我认为从时间(小时/分钟/秒)开始(日/月/日)是最干净的解决方案,因为你想在当天进行查询。