Può capitare di dover copiare degli appuntamenti, da una lista SharePoint Online, nelle settimane successive, mantenendo lo stesso orario.

Questo funziona senza problemi, basta prendere la data dell'appuntamento originale e sommare (addDays) X giorni da aggiungere:

Power Automate

addDays('2023-03-30T15:00:00Z', 14)

La cosa si complica se l'appuntamento di destinazione si trova a cavallo di un cambio ora solare/legale (daylight saving time).

Soluzione 1

In questo esempio di Power Automate si può vedere come una data del 30 marzo 2024 alle ore 16:00 italiane, corrisponde alle 15:00 UTC.
Demo daylight saving time
Demo daylight saving time
Se alla stessa data, si sommano 10 giorni, supero la data di cambio ora legale a solare, lo stesso appuntamento corrisponderebbe alle ore 17:00 ora italiana, quindi un ora dopo del voluto.

L'esempio corrisponde a questo Power Automate
Source daylight saving time
Source daylight saving time

Power Automate

varStartDateLocal = convertFromUtc(variables('varStartDateUTC'),variables('varTimeZoneLocal'))

varEndDateUTC = addDays(variables('varStartDateUTC'), 10)

varEndDateLocal = convertFromUtc(variables('varEndDateUTC'),variables('varTimeZoneLocal'))

A questo punto si può ricavare la differenza tra le variabili varEndDateLocal e varStartDateLocal per determinare l'offset, in minuti, da applicare alla data varEndDateUTC.

Ma prima, la parte della data va uniformata, in modo da poter calcolare solo la differenza oraria
Offset in minuti
Offset in minuti
il corrispondente Power Automate è questo
Source Offset in minuti
Source Offset in minuti

Power Automate

varStartDateLocalFixedDate = concat('2024-04-03T',formatDateTime(variables('varStartDateLocal'), 'HH:mm:ss'), 'Z')

varEndDateLocalFixedDate = concat('2024-04-03T',formatDateTime(variables('varEndDateLocal'), 'HH:mm:ss'), 'Z')

varEndDateOffsetMinutes = div(sub(ticks(variables('varStartDateLocalFixedDate')),ticks(variables('varEndDateLocalFixedDate'))),600000000)

varEndDateUTCCorrect = addMinutes(variables('varEndDateUTC'), variables('varEndDateOffsetMinutes'))
Nella variabile varEndDateUTCCorrect c'è la data corretta da scrivere sulla lista SharePoint Online.

Soluzione 2

Questa soluzione è ancora più semplice, prevede di fare la somma dei giorni sulla data, dopo averla convertita nella time zone locale, e poi riconvertirla in UTC prima di salvarla.
Demo 2
Demo 2
il corrispondente Power Automate è questo
Source 2
Source 2

Power Automate

varStartDateLocal = convertFromUtc(variables('varStartDateUTC'),variables('varTimeZoneLocal'))

varEndDateLocal = addDays(variables('varStartDateLocal'), 10)

varEndDateUTC = convertToUtc(variables('varEndDateLocal'), variables('varTimeZoneLocal'))
Nella variabile varEndDateUTC c'è la data corretta da scrivere sulla lista SharePoint Online.
Tags:
Power Automate28 Esempi224 SharePoint Online75
Potrebbe interessarti anche: