3

みなさん、良い一日を!aprojectmでの作業私はGoogleSpereadsheetインターフェースでの作業を開始する必要があり、これまでJavaScriptを使用していなかったため、すぐには克服できない問題に直面しました。文字列として特定の形式の日付があります

var date = "2012-08-09";

私が必要なのは、次の日の日付を取得することです

date = "2012-08-10";

これには、必要に応じて、日だけでなく月と年も変更する必要があります。

日付形式を使ってみました

  var datum= new Date(date);
  datum.setDate(datum.getDate() + 1);
  date = datum.toString('yyyy-MM-dd');

しかし、データム変数への日付の書き込みでコードが失敗したように見えます。この小さな問題を解決するための最良かつ最も迅速な方法は何ですか?

ありがとう

4

4 に答える 4

1

質問に「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
于 2013-03-22T22:33:44.390 に答える
0

運が良ければ解析の問題のように聞こえます。日付を分割し、パラメータを個別に入力すると、エラーが発生した場合に役立ちます。-

var parts = date.split("-");
var datum = new Date(
  parseInt(parts[0], 10), 
  parseInt(parts[1], 10) - 1, 
  parseInt(parts[2], 10));

JavaScript Dateオブジェクトには組み込みの書式設定関数はありませんが、GoogleAppsAPIが異なるかどうかはわかりません。コードの最後の行を実行するには、JavaScriptの日付オブジェクトからデータを抽出してフォーマットする独自の関数を作成する必要がある場合があります。日付を2桁にする場合は、ゼロフィル関数も作成する必要があります。出力の月の部分。

var formatted = datum.getFullYear() + "-" + 
  zerofill(datum.getMonth() + 1, 2) + "-" + 
  zerofill(datum.getDate(), 2);
于 2012-12-04T09:08:05.927 に答える
0

toStringへのフォーマット文字列の受け渡しは.NETで機能し、Javaでも機能する可能性がありますが、これはJavascriptでは機能しません。次のことを試してください、

var date = "2012-08-09";
var datum = new Date(date);
datum.setDate(datum.getDate() + 1);
date = datum.getFullYear() + "-" + (datum.getMonth() + 1) + "-" + datum.getDate();
于 2012-12-04T09:44:45.917 に答える
0

http://jsfiddle.net/で次のことを試してください。

<html>
<head>
    <script>
        function foo(){
            var date = "2012-08-09";
            var datum = new Date(date);
            datum.setDate(datum.getDate() + 1);
            date = datum.getFullYear() + "-" + (datum.getMonth() + 1) + "-" + datum.getDate();       
            document.getElementById("demo").innerHTML = date;
        }
    </script>
</head>
<body onload="foo()">
    <p id=demo></p>
</body>
</html>​
于 2012-12-04T13:17:52.953 に答える