日期时间转换为时间戳

时间:2015-07-29 19:22:14

标签: python datetime salesforce apex soql

我试图编写一些代码来过滤SalesForce中的记录,这些记录在之前的字段中具有值。我已经放弃尝试格式化一个过滤来自SalesForce的结果的查询,因为我没有尝试过工作,也没有任何人建议工作(它们都返回"格式错误的请求")。虽然,我显然也对这方面的建议持开放态度。

所以,我已经确定了这样的事情:

        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

但是当我完成后,我最终会得到两种不兼容的日期格式进行比较。问题是,我不知道如何转换&#34;现在&#34;来自datetime和&#34; disable_on&#34;从SalesForce到可以比较的时间戳。我得到的是:

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

我知道我需要将UTC中的禁用更改为UTC中的实际日期时间对象,但我不知道要使用哪个公式。

1 个答案:

答案 0 :(得分:2)

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

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

示例/演示 -

>>> 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中实现(Atleast不在我的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