Pillola di Apps Script #0015
Nome: Il ruolo del timeZone nella formattazione delle date
Descrizione: Per convertire una data nel formato di interesse, con Google Apps Script, è possibile utilizzare il metodo formatDate della Classe Utilities. Tale metodo accetta tra i parametri il timeZone (che indica il fuso orario con il quale sarà gestito il risultato). È molto importante prestare attenzione a questo parametro in quanto il risultato della conversione del formato della data può essere imprevisto e inaspettato. Il codice che segue mostra alcuni metodi per definire il timeZone. A seguire la spiegazione di quale approccio è consigliato utilizzare ed il perché conviene farlo.
Stato di verifica: VERIFICATO
Ambito di utilizzo: Google Script, Google Sheets
Segnalatore: Michele Pisani (Analytics Traps)
Codice:
Utilities.formatDate(date, ‘UTC‘, ‘yyyy-MM-dd’);
Utilities.formatDate(date, ‘GMT+1‘, ‘yyyy-MM-dd’);
Utilities.formatDate(date, ss.getSpreadsheetTimeZone(), ‘yyyy-MM-dd’);
Maggiori informazioni su: https://www.analyticstraps.com/utc-vs-gmt-vs-getspreadsheettimezone/
Quando si lavora con le date in Google Sheets, e relative elaborazioni con Google Apps Script, è consigliato definire sempre lo stesso timeZone dello strumento dal quale si recuperano i valori, appunto lo Spreadsheet. Per farlo sarà sufficiente applicare il metodo getSpreadsheetTimeZone() all’istanza del Foglio di Google all’interno del file di script.
Maggiori informazioni, un esempio pratico ed un caso di anomalia nell'utilizzo di un metodo diverso da quello indicato, si trovano sul mio blog relativo alle Trappole di Analytics: https://www.analyticstraps.com/utc-vs-gmt-vs-getspreadsheettimezone/
Se vuoi scrivere anche tu la tua Pillola di Apps Script su appsscript.it segui le indicazioni contenute nell'articolo "Pillole di Apps Script: la sezione dedicata a piccole funzioni, trucchi e suggerimenti".
Il tuo contributo è fondamentale, quello che per qualcuno può sembrare una banalità per qualcun altro è un grande aiuto!
Ciao, ho un problema con le date ore, reperisco dal mio calendario google in funzione ad un evento la data inizio e fine. Prima considerazione sulle impostazioni di calendar ad oggi mi porta GMT+02:00 come fuso orario , nel foglio di google dove gira il mio script impostazioni vedo GMT+01:00 (quindi prima differenza) cmq quando eseguo lo script e reperesco l'evento utilizzando (var data1 = Utilities.formatDate(new Date(event[W].getStartTime()), Sheet.getSpreadsheetTimeZone , "dd-MM-yyyy HH:mm:ss");) l'orario sul calendario è settatto alle ore 14:00 la variabile data1 è uguale a 12 e non a 14. Ho provato ad utilizzare nellUtilities di fisso GMT+2 e funziona , ma non mi va bene perche non è variabile al cambio del fuso oraario.
INOLTRE l'istruzione (var dd1 = new Date(event[W].getStartTime());) in questo caso la variabile dd1 riporta come ora 08 e non 14 portando come fuso urario GMT-0400 (Easterling Daylight Time)
il primo forse potrebbe essere piu semplice ma non ho capito perche non funziona il secondo come faccio recuperare l'oraro in base al fuso orario?
Ciao Domenico,
non conosco il contesto del caso specifico, ad ogni modo prova a vedere se in questa pagina della documentazione ufficiale trovi qualche informazione che può essere utile alla tua situazione: https://developers.google.com/google-ads/scripts/docs/features/dates