J'essaie de convertir une colonne code> DateTime code> dans un CSV à un format Salesforce DateTime pour effectuer une upert. J'ai essayé d'expression comme ci-dessous dans mule-3.8.4 dataweave1.0 mais je reçois une erreur.
J'ai essayé ce qui suit: p>
Sortie attendue forte>: 2019-01-14t06: 2019-01-14t06: 31: 00Z P> Sortie réelle forte>: mon janvier 14 18 : 31: 00 Est 2019 P> Après UPSert dans Salesforce, il ressemble à ceci: Sortie attendue forte> : 2019-01-14t06: 31: 00 p> après upert in Salesforce, On dirait que ceci: Quel est le problème? P> p> 2019-01-14t00: 00: 00.000 + 0000 code>. Il ne sauve pas l'heure. P>
2019-01-14t00: 00: 00.000 + 0000 code>. Il ne sauve toujours pas l'heure. P>
3 Réponses :
Pour formater une date, la lecture de modèle de format de gauche à droite doit correspondre à votre sortie attendue. Donc, pour votre exemple: P>
2019-01-14t06: 31: 00Z P>
AAAA-MM-DD'HHHHHH: MM: SSZ P>
y est pour l'année M est pour le mois (Minuscule m est pour minute p>
D est pour la journée p>
H est pour une heure au format de 24 heures. (Minuscule serait au format 12) p>
s est pour millisecondes p>
et z est un fuseau horaire Vous pouvez plus configurer pour le fuseau horaire et les millisecondes si nécessaire. P>
Voici les informations sur le format de la date Salesforce: P>
Plus de format de date Info: P>
https://docs.oracle.com /javase/7/docs/api/java/text/simpledeformat.html p>
Test_date: "1/2/19 18:31" As: localDateTime {Format: "M / DD / YY H: mm A"} Comme: localDateTime {format: "AAAA: MM: MM: MM: MM: SSZ "}). J'ai essayé les modifications que vous avez suggérées mais toujours les heures et les minutes ne sont pas annexées lorsque UPSert a été effectué dans Salesforce.Après le résultat UPSert: 2019-01-22T00: 00.000 + 0000. Pour une raison quelconque, Salesforce ne met que la mise à jour de la partie de date et de l'annexe 00 à des heures, minutes et secondes. Merci encore.
Avez-vous essayé de l'envoyer à Salesforce en tant que string code>? Une fois que quelque chose est de type localDateTime code>, il n'y a pas d'autre mise en forme. Le formatage est uniquement dans le but d'analyser une chaîne code> dans un
localDaTetime Code> ou formatant la sortie d'un
localDaTetime code> à un
chaîne code>. Par exemple:
...
%var inputFormat = "M/dd/yy h:mm a"
%var outputFormat = "yyyy-MM-dd'T'HH:mm:ss"
---
"1/14/19 6:31 PM"
as :localdatetime { format: inputFormat } // Used to parse the input string
as :string { format: outputFormat } // Used to format the output string
Quand j'ai essayé de l'envoyer à Salesforce en tant que chaîne? Il a échoué dans la transformation du message dans Dataweave Steweave avec l'erreur ci-dessous. Test_date: "21/02/19 18:31 PM" Comme: localDateTime {format: "M / DD / YY H: mm a"} As: chaîne {format: "AAAA-MM-DD'HH: MM: MM: MM: MM: MM: SS.SSSZ "}) ne peut pas coercer A: LocalDaTime To A: String, causée par: champ non pris en charge: offsetseconds.
Droite, je crois que c'est parce que localDateTime code> n'a pas de fuseau horaire. docs.oracle.com/javase/8/docs/ API / Java / Time / LocalDateTime.ht ML "Cette classe ne stocke pas ou ne représente pas une zone horaire."
Cela pourrait réussir si vous prenez le z code> hors du format, mais cela fait un certain temps depuis que j'ai intégré avec Salesforce.
Enfin, au-dessous du code a fonctionné. Mule Dataweave a converti le format suivant (AAAA-MM-DD'HHHH: MM: SS.SSSZ) à Java.Util.Calendar Object. P>
Test_date: "1/22/19 18:31 PM" Comme: localDateTime {format: "M / DD / YY H: mm A"} As: DateTime {format: "AAAA-MM-DD'HHH : mm: ss.sssz "}) p>
Voici comment la charge utile recherche un message de transformation dans Dataweave (étape ci-dessus): p>
Test_date = Java.Util.GregorianCalendar [Time = ?, Isfieldsset = False, arreallfieldseSet = true, Lenient = vrai, zone = sun.util.calendar.zoneinfo [id = "gmt", décalée = 0, dstSavings = 0 , EmailAnlight = False, Transitions = 0, Lastrule = NULL], premierDayOfweek = 1, minimaldaysInfirstweek = 1, ERA = 1, année = 2019, mois = 0, week-end = 0, jour_of_month = 5, jour_of_month = 22, jour_of_year = 84, Jour_of_week = 2, jour_of_week_in_month = 4, am_pm = 1, heure = 4, hour_of_day = 18, minute = 31, second = 0, milliseconde = 0, DST_OFFSET = 0] P>
Sortie après UPSert dans Salesforce: 2019-01-22T18: 31: 00.000 + 0000 P>
Pouvez-vous m'aider à comprendre: comment le jeter à un localDateTime le rendrait Java.Util.calendar comme Salesforce s'attend à ce que Salesforce?