質問に「Javascript」のタグを付けるとき、および実際にGoogle Apps Scriptを使用しているときの問題は、GASで使用できるいくつかの特別な機能を知らない人から良い回答が得られることです。
GASはJavascriptに基づいていますが、JavascriptはGASではありません...私の意味がわかると;-)
とはいえ、実際には日付文字列をフォーマットするための「特別な」関数があり、それを次のコードで示します。
ただし、問題が発生する可能性のある別のポイントもあります。日付オブジェクトで時間を指定しないと、夏時間を使用する国に住んでいる場合、1日シフトするリスクがあります。この問題はこのフォーラムや他の場所で頻繁に議論されているため、すべての詳細を説明することはしませんが、日付オブジェクトで遊ぶときはこれを考慮に入れることをお勧めします。以下のコードでは、作成した日付オブジェクトから(タイムゾーン)文字列を抽出してtz
、夏時間か冬時間かを確認し、このtz
文字列をメソッドのパラメーターとして使用しますUtilities.formatDate()
。これにより、あらゆる状況で正確な結果が保証されます。
これが(最後に)テストコードです:(
ロガーを使用して結果を確認します。スクリプトエディター>表示>ログ)
function test(){
date = "2012-08-9";
var parts = date.split('-')
var datum = new Date(parts[0],parts[1]-1,parts[2],0,0,0,0);// set hours, min, sec & milliSec to 0
var tz = new Date(datum).toString().substr(25,8);// get the tz string
Logger.log(datum+' in TimeZone '+tz)
datum.setDate(datum.getDate() + 1);// add 1 day
var dateString = Utilities.formatDate(datum,tz,'yyyy-MMM-dd');// show result like you want, see doc for details
Logger.log(dateString);// the day after !
}
ロガーの結果:
Thu Aug 09 2012 00:00:00 GMT+0200 (CEST) in TimeZone GMT+0200
2012-Aug-10