Datetime int在更少的行中



现在我正在使用以下函数来计算日期和时间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'

我认为打破日期(年/月/日期)从时间(小时/分钟/秒)是最干净的解决方案,因为你想做查询天