it-swarm.com.de

Timezone-Konvertierung in einer Google-Tabelle

Ich weiß, das sieht einfach aus.

In einer Google-Tabelle habe ich eine Spalte, in der ich die Zeit in einer Zeitzone (GMT) eingebe Eine andere Spalte sollte die Zeit in einer anderen Zeitzone (Pacific Time) automatisch erhalten.

 GMT      | PT
----------|------------
 5:00 AM  | 9:00 PM

Ab jetzt verwende ich 

 =$C$3-time(8,0,0)

Das Problem hier ist, ich möchte die Zeitformel für die Sommerzeit ändern.

Gibt es eine Funktion oder ein Skript, die die Sommerzeit automatisch in die Berechnung einbezieht?.

15
skay

Kurze Antwort

Es gibt keine integrierte Funktion, Sie können jedoch eine benutzerdefinierte Funktion erstellen.

Beispiel

/**
 * Converts a datetime string to a datetime string in a targe timezone.
 *
 *@param {"October 29, 2016 1:00 PM CDT"} datetimeString Date, time and timezone.
 *@param {"GMT"} timeZone Target timezone
 *@param {"YYYY-MM-dd hh:mm a z"} Datetime format
 *@customfunction
 */
function myFunction(datetimeString,timeZone,format) {
  var moment = new Date(datetimeString);
  return Utilities.formatDate(moment, timeZone, format)
}

Erläuterung

Um Sommerzeitzonen zu berücksichtigen, sollte das Eingabeargument für den umzuwandelnden Wert das Datum und nicht nur die Tageszeit enthalten. Sie können eine Standardzeit für Datum und Zeit festlegen, um den datetimeString zu erstellen, indem Sie ihn vor dem Aufruf der Formel verketten.

=myFunction("October 29, 2016 "&A2&"GMT","PDT","hh:mm a")

Siehe auch

Verweise

15
Rubén

Dieses Tutorial war unglaublich hilfreich: https://davidkeen.com/blog/2017/01/time-zone-conversion-in-google-sheets/

In Google Sheets ist keine Methode zur Konvertierung von Zeitzonendaten integriert. Mithilfe von Moment.js und Googles Skripteditor können wir jedoch jedem Blatt Zeitzonenfunktionen hinzufügen.

Dies sind die Dateien, die ich in mein Skriptprojekt kopiert habe:

Stellen Sie sicher, dass Sie zuerst das Skript moment.js hinzufügen und es über dem Skript moment-timezone.js haben, da moment-timezone.js davon abhängt.

In Ihrem anderen Skriptprojekt kann Ihre Code.gs-Datei dann so aussehen:

var DT_FORMAT = 'YYYY-MM-DD HH:mm:ss';

/**
https://stackoverflow.com/questions/34946815/timezone-conversion-in-a-google-spreadsheet/40324587
*/
function toUtc(dateTime, timeZone) {  
  var from = m.moment.tz(dateTime, DT_FORMAT, timeZone);//https://momentjs.com/timezone/docs/#/using-timezones/parsing-in-zone/
  return from.utc().format(DT_FORMAT);
}

/**
https://stackoverflow.com/questions/34946815/timezone-conversion-in-a-google-spreadsheet/40324587
*/
function fromUtc(dateTime, timeZone) {
  var from = m.moment.utc(dateTime, DT_FORMAT);//https://momentjs.com/timezone/docs/#/using-timezones/parsing-in-zone/
  return from.tz(timeZone).format(DT_FORMAT);
}

enter image description here

2
Ryan

Das geht auch ohne Makros. Es reicht aus, nur Funktionen und Datenmanipulationen zu verwenden. Den gesamten Prozess hier zu erklären, wäre etwas umständlich. Recherchieren Sie einfach, wie die verschiedenen Zeitfunktionen funktionieren, und setzen Sie Ihre Kreativität ein. 

Hinweis: Verwenden Sie = NOW (), wenn Sie sowohl das aktuelle Datum als auch die Uhrzeit anzeigen möchten. Sie werden dies tatsächlich benötigen, wenn Sie den genauen Zeitunterschied zwischen verschiedenen Datumsangaben ermitteln müssen. 

Verwenden Sie = JETZT () - INT (JETZT ()), wenn Sie nur die Uhrzeit wünschen (mit Datumsangabe, wenn beide Zeiten auf dasselbe Datum fallen). Formatieren Sie dann die entsprechende Zelle oder die entsprechenden Zellen für Zeit (d. H. 16:30 Uhr), nicht für Datum und Uhrzeit (25.03.2014 17:00:00). Letzteres ist das Format, das Sie verwenden würden, wenn Sie Datum und Uhrzeit anzeigen möchten. Wenn Sie JETZT () verwenden.

Suchen Sie auch online nach der Sommerzeitverschiebung für die verschiedenen Standardzeitzonen (PT, MT, CT, ET, AT) in Bezug auf die koordinierte Weltzeit (UTC). Zum Beispiel im Jahr 2019 ist der Versatz für Pacific Time UTC-7, wenn DST am 10. März um 02:00 Uhr (Pacific) bis 3. November um 02:00 Uhr beginnt. Dies bedeutet, dass der Zeitunterschied von UTC zu Pazifik 7 Stunden beträgt. Während des restlichen Jahres ist 8 Stunden (UTC-8). Während der DST-Beobachtung, die irgendwann im März (am 10. dieses Jahres) beginnt, geht es von PST zu PDT, indem die Uhren um 1 Stunde vorwärts bewegt werden, oder was wir als UTC-7 (Sommerzeit) kennen. Nach der DST-Beobachtung geht es von PDT zu PST, indem die Uhren erneut um 1 Stunde zurückgeschoben werden, oder was wir als UTC-8 (oder Winterzeit) kennen. Denken Sie daran, dass die Uhr im März um eine Stunde vorgestellt wird, um die Zeit besser zu nutzen. Das nennen wir DST oder Sommerzeit. Nach dem 8. März um 2 Uhr morgens (dieses Jahr 2019) sind wir also in UTC-7. Im November machen wir das Gegenteil. Am 3. November um 2 Uhr morgens wird die Uhr um eine Stunde zurückgenommen, wenn der Winter beginnt. Zu diesem Zeitpunkt sind wir wieder in der Standardzeit. Scheint ein bisschen verwirrend zu sein, ist es aber wirklich nicht.

Im Grunde gehen die Leute in PT im März von PST zu PDT und im November von PDT zu PST. Mit Mountain Time, Central Time und Eastern Time läuft der gleiche Vorgang ab. Sie haben jedoch unterschiedliche UTC-Zeitversätze. MT ist entweder UTC-6 oder UTC-7. CT ist entweder UTC-5 oder UTC-6. Und ET ist entweder UTC-4 oder UTC-5. Alles hängt davon ab, ob wir uns in der Sommerzeit befinden, wenn die Sommerzeit berücksichtigt wird, um Tageslicht und Arbeitszeiten besser zu nutzen, oder in der Winterzeit (AKA, Standard Time).

Studieren Sie diese gründlich und verstehen Sie, wie sie funktionieren, und spielen Sie mit den verschiedenen Zeitfunktionen in Excel oder Google Sheets wie den Funktionen TIME (#, #, #) und JETZT () und ähnlichen Funktionen herum Etwas wie ein Profi mit einfachen Funktionen zu tun, ohne VBA verwenden zu müssen. Sie können die Funktion TEXT () jedoch auch mit Tricks wie = TEXT (L4, "DDD, MMM D") & "|" & TEXT (L4, "h: mm AM/PM") verwenden, wobei L4 Ihr Datum enthält -timestamp, um Zeit- und Datumsformate anzuzeigen. Die VALUE () - Funktion ist ab und zu auch praktisch. Sie können sogar einen numerischen Countdown-Timer ohne Verwendung von Makros entwerfen. Dazu müssten Sie eine Zirkelreferenz erstellen und Iterationen auf 1 setzen und die Zeit alle 1 Minute in Ihren Tabelleneinstellungen anzeigen lassen.

Die offizielle Website von timeanddate dot com ist eine gute Informationsquelle für alle, die über Zeitzonen und den Umgang mit Tageslicht informiert sind. Sie haben auch alle UTC-Offsets. Viel Glück.

1
user10897742