日期时间转换为时间戳

Datetime conversions to timestamp

我正在尝试编写一些代码来过滤来自 SalesForce 的记录,这些记录的字段中的值不是现在之前的值。我已经放弃尝试格式化查询以过滤来自 SalesForce 的结果,因为我没有尝试过有效并且没有任何人建议有效(它们都是 return "malformed request")。虽然,我显然也愿意接受这方面的建议。

所以,我决定是这样的:

        now = datetime.now(pytz.UTC)
        disables = self.sssvc.query("select Name, Project__c, Ownerid, Id, DisableOn__c, User__c from PIXDisableUserTask__c WHERE Status__c = 'Pending'")
        for disable in disables[u'records']:
            disable_on = disable[u'DisableOn__c']
            if disable_on < now:
                continue
            else:
                disables.pop(disable)
            print
        return disables

但是当我完成后,我得到了两个不兼容的日期格式来进行比较。问题是,我不知道如何将 "now" 来自 datetime 的值和 "disable_on" 来自 SalesForce 的值转换为可以比较的时间戳。我得到的是这样的:

now = 2015-07-29 19:19:07.322224+00:00
disable_on = u'2015-06-24T12:00:00.000+0000'

我知道我需要将 disable 从字符串更改为 UTC 中的实际日期时间对象,但我不知道要使用什么公式。

对于Python 3.x,可以使用如下格式-

%Y-%m-%dT%H:%M:%S.%f%z

Example/Demo -

>>> import datetime
>>> datetime.datetime.strptime(u'2015-06-24T12:00:00.000+0000','%Y-%m-%dT%H:%M:%S.%f%z')
datetime.datetime(2015, 6, 24, 12, 0, tzinfo=datetime.timezone.utc)

您也可以使用下面给出的dateutil.parser方法。


对于 Python 2.x'%z' 指令未在 Python 2.x 中实现(至少不在我的 Python 2.6) 中,但您可以使用 dateutil.parser.parse() 来解析日期 -

>>> import dateutil.parser
>>> dateutil.parser.parse(u'2015-06-24T12:00:00.000+0000')
datetime.datetime(2015, 6, 24, 12, 0, tzinfo=tzutc())

注意 - 您也可以在 Python 3 中使用 dateutil


所以对于 Python 2.x ,你的代码看起来像 -

import dateutil.parser
now = datetime.now(pytz.UTC)
disables = self.sssvc.query("select Name, Project__c, Ownerid, Id, DisableOn__c, User__c from PIXDisableUserTask__c WHERE Status__c = 'Pending'")
for disable in disables[u'records']:
    disable_on = dateutil.parser.parse(disable[u'DisableOn__c'])
    if disable_on < now:
        continue
    else:
        disables.pop(disable)
    print
return disables