M365Con 2027 – conferenza online gratuita · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Power Automate formatDateTime: sintassi, stringhe di formato ed esempi

By ·

formatDateTime di Power Automate spiegata: sintassi, le stringhe di formato che contano, i fusi orari con convertTimeZone e gli errori che producono date e ore sbagliate.

Automatically translated with AI from the original post. Read the English original

formatDateTime di Power Automate trasforma una data e un'ora nel testo che ti serve. La sintassi è formatDateTime(timestamp, format, locale), dove il formato e la localizzazione sono facoltativi e il risultato è una stringa. Ad esempio, formatDateTime(utcNow(), 'dd-MM-yyyy') restituisce la data UTC corrente come giorno, mese e anno. Questo articolo è pensato per chi crea flussi e si ritrova continuamente date come 2023-10-22T00:00:00Z in email, nomi di file o colonne di SharePoint. Copre la sintassi, le stringhe di formato che userai più spesso, la trappola dei fusi orari, una tabella dei pattern più comuni e gli errori che producono risultati sbagliati.

Punti chiave

  • La sintassi è formatDateTime(timestamp, format, locale), dove il formato e la localizzazione sono facoltativi e il risultato è sempre una stringa.
  • Senza formato, la funzione restituisce il pattern round-trip ISO 8601, ad esempio 2018-03-15T00:00:00.0000000.
  • Le maiuscole contano nelle stringhe di formato: MM è il mese e mm sono i minuti, mentre HH è l'ora a 24 ore e hh è l'ora a 12 ore.
  • Power Automate lavora in UTC per impostazione predefinita, quindi converti prima il fuso orario con convertTimeZone o convertFromUtc e poi formatta il risultato.
  • Racchiudi tra apici singoli i valori digitati e le stringhe di formato, ma non racchiudere mai il contenuto dinamico tra apici singoli.

Come funziona formatDateTime

La funzione prende un timestamp e lo riscrive. L'articolo di Microsoft sulla formattazione dei valori di data e ora in un flusso descrive il primo argomento come la data e l'ora da formattare. Può essere digitato a mano oppure provenire dal contenuto dinamico. I valori digitati devono essere in formato ISO 8601, come 2009-06-15T13:45:30. Il secondo argomento è la stringa di formato. Un singolo carattere è una stringa di formato standard. Più di un carattere è una stringa di formato personalizzata, che controlla posizione e precisione di mese, giorno, anno, ora, secondi e così via.

Tre dettagli del riferimento alle espressioni di workflow di Microsoft meritano di essere ricordati:

  • Il formato è facoltativo. Se lo ometti, il valore predefinito è il pattern o, che Microsoft descrive come ISO 8601 con le informazioni sul fuso orario conservate. formatDateTime('03/15/2018') restituisce '2018-03-15T00:00:00.0000000'.
  • Un formato non valido genera un errore. L'esecuzione del flusso non riesce, quindi un refuso nel pattern compare nella cronologia delle esecuzioni.
  • La localizzazione è facoltativa. Se la ometti, il valore è en-us. Una localizzazione non valida genera un errore. È così che ottieni i nomi di mesi e giorni in un'altra lingua: formatDateTime('01/31/2016', 'dddd MMMM d', 'fr-fr') restituisce 'dimanche janvier 31', mentre la stessa chiamata senza localizzazione restituisce 'Sunday January 31'.

Il valore restituito è una stringa, e questo conta nella pratica. Una volta formattata una data, ottieni del testo, quindi non dovresti usare il risultato per i calcoli con le date. Esegui prima il calcolo con funzioni come addDays o addToTime, e formatta solo alla fine. In Power Automate, il valore formattato è di solito quello che inserisci nel corpo di un'email, in un nome di file o in una colonna di testo.

Come usare formatDateTime in Power Automate, passo dopo passo

L'articolo Microsoft spiega con chiarezza come inserire l'espressione in un flusso.

  1. Seleziona il campo di input dell'azione in cui deve andare il valore formattato, ad esempio il Corpo di un'azione Invia un messaggio di posta elettronica (V2).
  2. Seleziona Aggiungi contenuto dinamico, quindi apri la scheda Espressione. Nella finestra di progettazione del flusso questa compare come il pulsante fx.
  3. Digita formatDateTime(, oppure trova la funzione nell'elenco delle funzioni Data e ora.
  4. Aggiungi il valore. Digita un valore fisso tra apici singoli oppure scegli un contenuto dinamico. Non mettere apici singoli attorno al contenuto dinamico.
  5. Aggiungi la stringa di formato tra apici singoli, ad esempio 'MM/dd/yyyy'.
  6. Seleziona OK per inserire l'espressione.

Lo schema della pagina Microsoft è questo: formatDateTime('2023-10-22', 'dd/MM/yyyy hh:mm tt') per un valore fisso tra apici, mentre la stessa chiamata con un elemento di contenuto dinamico al posto del valore tra apici va scritta senza apici.

L'esempio svolto nell'articolo usa un flusso avviato manualmente con un input Data. L'espressione è formatDateTime(triggerBody()?['date'], 'MM/dd/yyyy'). Con la data 2023-10-22, l'email mostra la data nella forma MM/dd/yyyy.

Per verificare un'espressione prima di costruirci sopra, usa un'azione Componi con un timestamp fisso tra apici singoli, esegui il flusso e leggi l'output nella cronologia delle esecuzioni. Ci vuole un minuto e ti evita di correggere un formato sbagliato in un flusso che invia già email reali.

Stringhe di formato che userai davvero

Le stringhe standard sono una sola lettera. Esempi Microsoft per il timestamp 2009-06-15T13:45:30:

  • 'g' restituisce 6/15/2009 1:45 PM, il modello generale di data e ora con l'ora breve.
  • 'D' restituisce Monday, June 15, 2009, il modello di data lunga.

La documentazione .NET elenca altre lettere standard. Esempi con lo stesso timestamp: 'd' dà 6/15/2009, 't' dà 1:45 PM, 'T' dà 1:45:30 PM, 's' dà l'ordinabile 2009-06-15T13:45:30, e 'Y' dà June 2009. La maggior parte di questi segue le regole della cultura, quindi la stessa lettera può apparire diversa con un'altra impostazione locale. Quelle che appaiono sempre uguali ovunque sono o, r, s e u.

Le stringhe personalizzate ti danno controllo. Questi sono gli specificatori che contano per i flussi:

  • yyyy è l'anno a quattro cifre, e yy l'anno a due cifre.
  • MM è il mese con lo zero iniziale, MMM il nome breve del mese e MMMM il nome completo del mese. M è il mese senza zero iniziale.
  • dd è il giorno con lo zero iniziale, ddd il nome breve del giorno e dddd il nome completo del giorno.
  • HH è l'ora nel formato a 24 ore, con lo zero iniziale. hh è l'ora nel formato a 12 ore, con lo zero iniziale.
  • mm sono i minuti, ss i secondi e fff i millisecondi.
  • tt indica AM o PM.

Seguendo questa tabella, formatDateTime('2009-06-15T13:45:30', 'yyyy-MM-dd') dà 2009-06-15, e 'hh:mm tt' dà 01:45 PM. L'articolo Microsoft sui flussi mostra anche formatDateTime(utcNow(), 'MMMM dd, yyyy, HH:mm'), che restituisce la data e l'ora UTC correnti nel formato June 15, 2009, 16:50, usando una data di esempio fissa.

Due particolarità derivano dalle regole di .NET. Primo: una singola lettera viene sempre interpretata come formato standard. Se vuoi usare un singolo specificatore personalizzato, anteponi un segno di percentuale, per esempio '%d'. Secondo: per inserire testo fisso in un formato, fai precedere il carattere da una barra rovesciata oppure racchiudi il testo tra virgolette. Gli altri caratteri che non sono specificatori vengono copiati nell'output così come sono. La barra e i due punti vengono sostituiti con i separatori delle impostazioni locali, cosa che può sorprendere quando passi un'altra impostazione locale.

Fusi orari: formatta dopo la conversione

Power Automate usa UTC per impostazione predefinita, e utcNow() restituisce la data e l'ora correnti in UTC. Se i tuoi utenti si trovano a Berlino o a New York, l'orario nella tua email sarà sbagliato se non lo converti prima.

L'articolo di Microsoft combina entrambe le funzioni: formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time'), 'yyyy-MM-dd HH:mm:ss'). La funzione interna cambia il fuso orario, quella esterna formatta il risultato. I nomi dei fusi orari sono quelli di Windows, come UTC, Pacific Standard Time e Eastern Standard Time. Per altre aree geografiche, usa il nome del fuso orario di Windows corrispondente dall'elenco di Microsoft.

Il riferimento al flusso di lavoro descrive anche convertFromUtc, che accetta un timestamp UTC e un fuso orario di destinazione e restituisce l'ora convertita senza lo scostamento UTC. Il suo esempio: convertFromUtc('2018-01-01T08:00:00.0000000Z', 'Pacific Standard Time') restituisce "2018-01-01T00:00:00.0000000". Esiste anche convertToUtc, che fa il percorso inverso. Inoltre Power Automate dispone dell'azione Converti fuso orario con gli input Ora di base, Fuso orario di origine, Fuso orario di destinazione e un Formato stringa facoltativo, se preferisci un'azione invece di un'espressione.

Se l'input non è un ISO 8601 valido, aspettati un errore come "The date time string must match ISO8601 format." Una data digitata come 15/03/2018 è una causa tipica. Per le date che arrivano in un formato locale, il riferimento descrive parseDateTime con un'impostazione locale e un formato, per esempio parseDateTime('21052019', 'fr-fr', 'ddMMyyyy'), che restituisce '2019-05-21T00:00:00.0000000'. Prima analizza, poi formatta.

Errori comuni

  • Usare mm per il mese. La mm minuscola indica i minuti, mentre MM indica il mese. Una data formattata come dd/mm/yyyy mostra i minuti dove dovrebbe esserci il mese.
  • Combinare HH con tt. L'esempio dello stesso Microsoft 'M/dd/yyyy HH:mm:ss tt' produce 6/15/2009 13:45:30 PM, che è contraddittorio. Usa hh con tt, oppure HH senza di essa.
  • Racchiudere tra virgolette il contenuto dinamico. Il contenuto dinamico non deve contenere apici singoli, altrimenti il flusso tratta il nome come testo semplice.
  • Dimenticare il fuso orario. Il valore predefinito è UTC. Converti prima di formattare.
  • Fare calcoli sul risultato. L'output è una stringa. Calcola prima, formatta per ultimo.
  • Fidarsi degli output di esempio di utcNow(). Le date nella documentazione sono esempi fissi. Il tuo risultato riflette l'ora corrente.
  • Passare una data non ISO. Analizzala prima con un'impostazione locale e un formato.

Argomenti correlati da esplorare

  • Convertire i fusi orari: l'articolo di Microsoft sulla conversione dei fusi orari descrive sia l'azione sia l'espressione.
  • Aggiungere o sottrarre tempo: addDays e addToTime accettano lo stesso formato facoltativo, quindi puoi spostare la data e formattarla in un'unica chiamata.
  • Analizzare formati di data locali: parseDateTime accetta un'impostazione locale e un formato per le date che non arrivano in ISO 8601.
  • L'elenco completo delle funzioni: il riferimento alle espressioni del flusso di lavoro documenta tutte le funzioni di data e ora.
  • Tutti gli specificatori personalizzati: la pagina stringhe di formato di data e ora personalizzate elenca ogni lettera.

Prossimo passo

Per ottenere risultati affidabili con formatDateTime in Power Automate, parti da una data in formato ISO 8601, converti il fuso orario prima di formattarla e testa il criterio di formato in un'azione Componi. Poi leggi l'articolo Microsoft su come personalizzare o formattare i valori di data e ora in un flusso, e conserva un breve elenco dei criteri che il tuo team usa più spesso.

Entities in this article

Power Automate

Related articles

RSS