-4

配列またはリストなどで最も近い時間を取得しようとしています。私はこのコードを見つけることができ、編集を行って動作させようとしましたが、うまくいきませんでした。簡単になればjqueryを使えます。以下はjavascriptのみですが、時間に最も近い時間をどのように出力できますか= thetime

さらに調査した結果、このスニペットを見つけて、私の目的に役立つと思います。

var date1 = myDate,
date2 = new Date();
return (date1.getTime() < date2.getTime());

私がしようとしていること

var currentTime = new Date()
var hours = currentTime.getHours()
var minutes = currentTime.getMinutes()

if (minutes < 10) {
    minutes = "0" + minutes
}

var thetime = hours + ":" + minutes + " "

var json = [{
    "times": {
        "times1": "20:01",
        "times2": "21:43",
        "times3": "22:56",
        "times4": "23:21"
    }
}]
var times = [];
var jsontimes = json[0].times;
for (var i in jsontimes) {
    times.push(new Date(jsontimes[i]))
}
times.sort(function (a, b) {
    return Math.abs(thetime - a / new Date()) + Math.abs(thetime - b / new Date())
});

// display code
for (var i = 0; i < jsontimes.length; i++)
    document.getElementById("output").innerHTML += dates[i] + "<br>";
4

1 に答える 1

0

無効な値 ("20:01" など) で Date オブジェクトを作成しようとしており、無効な日付になります。MDN によると、新しい Date オブジェクトを作成するときに、次の方法でパラメーターを渡すことができます。

Date(value)
Date(dateString)
Date(year, month, day [, hour, minute, second, millisecond])

ここで、値は「1970 年 1 月 1 日 00:00:00 UTC (Unix エポック) からのミリ秒数を表す整数値」です。と

dateString は、「日付を表す文字列値です。文字列は、解析メソッド (IETF 準拠の RFC 2822 タイムスタンプ) によって認識される形式である必要があります。」

ここで詳細を読むことができます: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

これは最初の質問に実際には答えませんが、必要な値で配列を作成するのに役立つはずです。

于 2013-10-11T20:14:35.653 に答える