现在我正在使用以下函数来计算日期和时间int,如(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")吗?
如果你在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'
我认为打破日期(年/月/日期)从时间(小时/分钟/秒)是最干净的解决方案,因为你想做查询天