0

最も簡単なことをして、日付/時刻を入力し、その時刻までの時間:分:秒を書き出す必要があります。私はそれを理解することができませんでした。素晴らしいDatejsを使ってみましたが、この機能が組み込まれていないようです。

時間は0分->20分の範囲になります

ありがとう!

4

2 に答える 2

7

とても単純なもののためにライブラリを気にしないでください。ライブラリを使用するかどうかに関係なく、入力日付文字列の形式を知っている必要があるため、ISO8601 (2013-02-08T08:34:15Z など) を想定すると、次のようなことができます。

// Convert string in ISO8601 format to date object
// e.g. 2013-02-08T02:40:00Z
//
function isoToObj(s) {
    var b = s.split(/[-TZ:]/i);

    return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));

}


function timeToGo(s) {

    // Utility to add leading zero
    function z(n) {
      return (n < 10? '0' : '') + n;
    }

    // Convert string to date object
    var d = isoToObj(s);
    var diff = d - new Date();

    // Allow for previous times
    var sign = diff < 0? '-' : '';
    diff = Math.abs(diff);

    // Get time components
    var hours = diff/3.6e6 | 0;
    var mins  = diff%3.6e6 / 6e4 | 0;
    var secs  = Math.round(diff%6e4 / 1e3);

    // Return formatted string
    return sign + z(hours) + ':' + z(mins) + ':' + z(secs);   
}

文字列を日付に変換する関数をいじる必要があるかもしれませんが、それほど多くはありません。クライアントの現地時間が提供された日時値のタイムゾーンに設定されていることが確実でない限り、とにかく UTC タイムストリングを提供する必要があります。

于 2013-02-08T02:47:05.637 に答える
2

Date.jsの代わりに、 Moment.jsを試してください。

于 2013-02-08T01:04:34.477 に答える