Googleスプレッドシートの異なるタイムゾーンでの日付時刻の時差を計算したい。
2つのフィールドを「datetime」としてフォーマットし、別のフィールドを「duration」としてフォーマットすると、差分演算子を使用して同じタイムゾーン内の差分を正常に計算できます。
例: A1 = 1/10/2016 10:10:00
、B2 = 13/11/2016 15:35:00
C2 = =B2-B1
.
しかし、タイムゾーンを日付時刻に追加すると、 A1 = 1/10/2016 10:10:00 GMT+1:00:00
、C2ディスプレイ #VALUE
.
私は自分でタイムゾーンの差を計算して期間から差し引くことができることを知っていますが、日時フィールドでタイムゾーンを直接指定することでそれを自動化する方法はありますか?
回答:
回答№1は6使う カスタム機能.
説明
Googleスプレッドシートの数式と日付形式にはタイムゾーンハンドラが含まれていないため、タイムゾーン記号を含めると、値が日時ではなく文字列と見なされます。
別の方法は、Google Apps Script / JavaScriptを使用して、タイムゾーンを含む日時文字列をGoogleスプレッドシートの日付に変換する関数を作成することです。
例
/**
* Converts a string to a date-time value
*
* @param {Thu Apr 23 2015 00:00:00 GMT+0200} dateTimeString
* @customfunction
*/
function stringToDateTime(dateTimeString) {
var output = new Date (dateTimeString);
if(!isNaN(output.valueOf())) {
return output;
} else {
throw new Error("Not a valid date-time");
}
}
A1 = 1/10/2016 10:10:00 GMT+0100
注:日時形式は、によってサポートされている必要があります JavaScriptの日付オブジェクト
=B1-stringToDateTime(A1)