2015-07-29 2 views
-2

J'essaye d'écrire du code qui filtrera des enregistrements de SalesForce qui ont une valeur dans un champ qui n'est pas avant maintenant. J'ai abandonné en essayant de formater une requête qui filtre les résultats de SalesForce parce que je n'ai pas essayé les travaux et rien n'a suggéré des travaux (ils renvoient tous "la demande malformée"). Bien que, je suis évidemment ouvert aux suggestions sur ce front aussi.Conversions datetime à timestamp

Alors, je me suis installé sur quelque chose comme ceci:

 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 

Mais quand je suis fait je finis avec deux formats de date incompatibles pour la comparaison. Le problème est, je ne sais pas comment convertir la valeur de "now" de datetime et "disable_on" de SalesForce en horodatages qui peuvent être comparés. Ce que je reçois est quelque chose comme:

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

Je sais que je dois changer désactiver d'une chaîne à un objet datetime réelle en UTC, mais je ne sais pas quelle est la formule à utiliser.

+0

Lire la [ 'DateTime' documentation ici] (https://docs.python.org/3.4/library/ datetime.html). – TigerhawkT3

+0

Utilisez-vous Python 2.x? –

+0

Essayez le moment. Nice py lib. – Christian

Répondre

1

pour Python 3.x, vous pouvez utiliser le format suivant -

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

Exemple/Démo -

>>> 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) 

Vous pouvez également utiliser la méthode dateutil.parser ci-dessous.


Pour Python 2.x, la directive '%z' n'est pas mis en œuvre en Python 2.x (Atleast pas dans mon Python 2.6), mais vous pouvez utiliser dateutil.parser.parse() pour analyser la date -

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

Remarque - Vous pouvez également utiliser dateutil dans Python 3.


Donc, pour Python 2.x, votre code ressemblerait -

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 
+0

Merci beaucoup! –