Transformer une date dans une chaine en Date au format utc

Étiquetté : , ,

  • Transformer une date dans une chaine en Date au format utc

    Posté par Didier ALTIDE sur 10 novembre 2021 à 11h13

    Je vous pose une question qui m’a été soumise. L’idée est de proposer un Forms avec des propositions de créneau de rendez-vous, et d’automatiser la génération de l’invitation.

    Problème : dans le Forms on veut pouvoir afficher la proposition “en langage naturel”, c’est-à-dire “02/11/2021 11h30-12h00”, or l’action pour générer l’invitation nécessite une heure sur le format “MM/dd/yyyy hh:mm tt’ )”.

    Quelles seraient les actions à utiliser (Compose ? Set variable ?) pour recomposer depuis la réponse du formulaire une heure utilisable pour l’invitation ?

    Merci pour votre aide.

    PostID=IKfinfbE9tN63g5

    Didier ALTIDE a répondu Il y a 11 mois, 3 semaines 1 Membre · 12 Réponses
  • 12 Réponses
  • Julien

    Membre
    10 novembre 2021 à 14h32
    Après la soumission, tu peux re formater comme souhaiter.Il me semble qu'en utilisant, exemple formatDateTime(triggerBody()?['Date'],'dd/MM/yyyy hh:mm'),nTu peux reconstruire la format et l'ordre dea valeurs de la date que tu souhaites.nnMais microsoft Forms, j'ai pas l'impression que l'option du format de la date soit disponible...nmais il me semble que le format est calqué sur le format de l'utilisateur et de sa région.n

    CommentID=zHqRC0LYgW7qDPo, PostID=IKfinfbE9tN63g5

  • Didier ALTIDE

    Membre
    10 novembre 2021 à 14h58

    Alors justement, on utilise pas la question “Date” de Forms, mais la question “réponse à choix unique”. Donc ce que l’on obtient c’est juste le contenu de la réponse au format string.

    Je ne pense pas que formatDateTime va reconnaître dans cette chaine une date, si ?

    Par contre qu’après avoir splitté, concaténé, etc… on puisse recomposer une date… ?

    CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Julien

      Membre
      10 novembre 2021 à 15h15

      @Didier ALTIDE Ah je comprends !

      En gros vous proposez des dates “forcées” via des champs oui/non ?

      Si oui, A mon avis, le plus simple est de faire des conditions en fonctions des réponses.

      Vu que vous savez quelle réponse est égale à telle date, vous conditionnez votre flux en fonction des réponses et vous pouvez ensuite créer votre invitation avec la date en “dure”.

      Si vous me dites que vous avez 15 choix de dates, c’est sur que cela va faire lourd, si c’est deux choix, c’est super rapide.

      EDIT : Ou alors, vous faites des listes multi choix avec les dates et heures déjà au bon format.

      Dans l’action Response, ceka devrait être exploitable directement dans votre invitation.

      SubCommentID=D1agcdGQphG676t, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Didier ALTIDE

      Membre
      10 novembre 2021 à 15h29

      C’est cela !

      En fait mon collègue voudrait ne pas avoir à modifier l’automate à chaque fois que des nouvelles propositions de réponse vont être saisies par quelqu’un qui lui(elle)-même ne saura pas changer l’Automate seul(e) (ou n’aura pas les droits).

      On voudrait juste faire respecter la syntaxe de la date dans la réponse, et que l’automate décortique tout seul la réponse pour générer la bonne invit’

      SubCommentID=lE3OWlutuKi2kXk, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Julien

      Membre
      10 novembre 2021 à 15h48

      Est-ce que dans l’invitation, c’est un unique champ ou deux champs date(s)?

      Si on est dans le second cas, il faut effectivement des actions type Components ou des varibales pour casser la valeur du Microsoft Form et reconstruire les dates deux dates, date de début et date de fin.

      Je pense qu’avec une fonction split, cela vous permet de récupérer la date, puis les heures séparées, puis vous refactorisez le tout.

      SubCommentID=Q7Y0Ef5sI9jDZYx, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Didier ALTIDE

      Membre
      10 novembre 2021 à 15h55

      @Ju_li3n Dans l’invitation il faut définir date/heure de début et date/heure de fin, mais date de fin c’est date de début +1h, ça on sait déjà le gérer quand on prend utc(now) comme date de début.

      Le vrai challenge c’est de trouver la combinaison de split et de concatener qui va nous amener à reformater une date de début acceptable.

      SubCommentID=pGOT9aDgGLWsLeX, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Julien

      Membre
      10 novembre 2021 à 16h03
      La fonction Split va permettre de garder la valeur à gauche du séparateur : split(outputs('VOTRE REPONSE'), '-')[0]nEt dans Microsoft forms, vous remplacez le "h" par ":" et je pense que vous êtes dans le bon format de date.nnLe format date Eurpéen : dd/MM/yyyy HH:mm donc vous seriez tout bon.n

      SubCommentID=rwhdP0mnQalHb7O, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • R3dKap

      Membre
      10 novembre 2021 à 16h56

      @Didier ALTIDE, dans les dates que tu mets dans tes réponses à choix unique, elles sont au format dd/mm/yyyy etc. ou mm/dd/yyyy etc. ?

      SubCommentID=Tuu2q3ldvbbd2pc, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Didier ALTIDE

      Membre
      10 novembre 2021 à 17h03

      @R3dKap “02/11/2021 11h30-12h00”. Donc il faudrait isoler les 16 premiers caractères, séparer les 10 premiers pour en faire un dd/mm/yyyy, prendre les 5 derniers des 6 qui restent en partant de la droite, remplacer les h par des “:” afin de récupérer une heure au format hh:mm

      SubCommentID=vGWMHf2SwRZXcR7, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • R3dKap

      Membre
      10 novembre 2021 à 17h04

      @Didier ALTIDE, voici les formules (j’ai supposé que tes dates de choix étaient au format 31/01/2021 12h30-13h30)…

      Note :str‘ est une variable qui contient ta date de choix au format 31/01/2021 12h30-13h30.

      Pour la date/heure de début

      concat(split(variables('str'),'/')[1],'/',substring(variables('str'),0,2),'/',substring(split(variables('str'),'/')[2],0,4),' ',replace(split(split(variables('str'),' ')[1],'-')[0],'h',':'),':00')n

      En gros, ça te renvoie : 01/31/2021 12:30:00

      Pour la date/heure de fin

      concat(split(variables('str'),'/')[1],'/',substring(variables('str'),0,2),'/',substring(split(variables('str'),'/')[2],0,4),' ',replace(split(split(variables('str'),' ')[1],'-')[1],'h',':'),':00')n

      Et celle-ci te renvoie : 01/31/2021 13:30:00

      Les dates sous ce format sont alors transformables en vraie dates avec la fonction suivante (ou sous tout autre format d’ailleurs selon ce que tu mettras dans le 2è paramètre) :

      formatDateTime(variables('datestrdeb'), 'yyyy-MM-ddTHH:mm:ss')n

      SubCommentID=4hrvgXE7qffRvyW, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Julien

      Membre
      10 novembre 2021 à 21h20

      @R3dKap Du con citizen développeur !

      SubCommentID=1nb7SPZ7Nbss8ty, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

    • Didier ALTIDE

      Membre
      10 novembre 2021 à 21h37

      Merci à tous les deux !!!!! Mille fois !!!

      SubCommentID=D31qDVwW6BMeEBG, CommentID=CEOFUKBQ4R9OqJf, PostID=IKfinfbE9tN63g5

Connectez-vous pour répondre.