2017-08-18 1 views
0

Je lis la liste des cellules Google Sheet contenant DateTime, en utilisant Google Apps Script. Les valeurs dans les cellules sont les suivantes:Script Google Spread Sheet. Travailler avec des dates

A1: 26 juillet 13:00

A2: Jul 27 0:00

var dateValues = SpreadsheetApp.getActiveSheet().getRange("A1:A2").getValues(); 

Cependant, les valeurs lues sont de 1 heure de retard. Voilà ce que je vois dans le débogueur:

dateValues ​​[0] = Mer 26 juillet 2017 12:00:00 GMT + 0200 (EET)

dateValues ​​[1] = Mer 26 juillet 2017 23h00: 00 GMT + 0200 (EET)

Je suppose que c'est un problème de fuseau horaire, mais je ne comprends pas vraiment le concept. Mon fuseau horaire est actuellement (raison de DTS) GMT + . En effet, en dehors de la période DTS, c'est GMT +2. Le fuseau horaire de la feuille de calcul est Jérusalem GMT + 2.

EET - ne sous-estimez pas pourquoi il est utilisé.

Fondamentalement, je m'attendrais à entrer dans le code les valeurs avec dans la feuille.

Quel est le concept?

+0

Dans la feuille de calcul elle-même, sous Paramètres Fichier-> Spreadsheet, à quoi est défini le fuseau horaire? –

+0

@Karl_S Jerusalem GMT + 2 – OJNSim

+0

Pouvez-vous le changer en fuseau horaire et voir ce que vous obtenez? –

Répondre

0

il y a deux façons de résoudre ce

  1. Utilisez getDisplayValues ​​() plutôt que getValues ​​(). Cela obligera à faire des conversions, comme getDisplayValues ​​() renvoie des chaînes pas de dates

  2. éditeur vous faire de script fuseau horaire correspondre la feuille tz. Dans mon cas, la feuille était (GMT + 2 Jérusalem), mais l'éditeur de script était différent (GMT + 2 Moscou) pour une raison quelconque. La définition de l'éditeur de script TZ a résolu le problème.