m / d/yyyyの形式の2つの文字列日付があります。たとえば、「11/1/2012」、「1/2/2013」などです。2つの文字列の日付を比較する関数をJavaScriptで記述しています。私の関数のシグネチャは、
bool isLater(string1, string2),
string1によって渡された日付がstring2によって渡された日付よりも遅い場合、trueを返し、そうでない場合はfalseを返します。したがって、isLater(“ 1/2/2013”、“ 11/1/2012”)はtrueを返す必要があります。このためのJavaScript関数を作成するにはどうすればよいですか?
175715 次
6 に答える
139
var d1 = Date.parse("2012-11-01");
var d2 = Date.parse("2012-11-04");
if (d1 < d2) {
alert ("Error!");
}
最近コメントからわかったので、以下のような文字列を直接比較できます
if ("2012-11-01" < "2012-11-04") {
alert ("Error!");
}
于 2013-02-08T20:57:33.857 に答える
17
2つの文字列を簡単に比較できます
function isLater(dateString1, dateString2) {
return dateString1 > dateString2
}
それで
isLater("2012-12-01", "2012-11-01")
trueを返します
isLater("2012-12-01", "2013-11-01")
falseを返します
于 2017-03-13T10:03:38.533 に答える
13
日付を解析し、数値と同じように比較します。
function isLater(str1, str2)
{
return new Date(str1) > new Date(str2);
}
他の日付形式をサポートする必要がある場合は、date.jsなどのライブラリを検討してください。
于 2013-02-08T20:54:42.223 に答える
2
受け入れられた回答のように、yyyy-mm-dd形式ではない日付文字列を直接解析することはできません。vitranによる回答は機能しますが、JQueryが混在しているため、少し作り直しました。
// Takes two strings as input, format is dd/mm/yyyy
// returns true if d1 is smaller than or equal to d2
function compareDates(d1, d2){
var parts =d1.split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts = d2.split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 <= d2;
}
PSはvitranの投稿に直接コメントしたはずですが、私にはそれを行う担当者がいません。
于 2018-08-22T12:57:31.343 に答える
-1
日付が標準形式yyyy-mm-dd(2017-02-06)でない場合、たとえば2016年6月20日。このコードを使用できます
var parts ='01/07/2016'.val().split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts ='20/06/2016'.val().split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 > d2
于 2017-04-27T15:00:48.393 に答える
-1
「Date.parse()」を使用して日付を適切に比較できますが、ほとんどのコメントでは、文字列を分割してから数字を合計し、明らかに間違ったロジックと比較しようとしているため、完全ではありません。
これがトリックです。文字列を分割する場合は、ネストされた形式でパーツを比較します。
年と年、月と月、日と日を比較します。
<pre><code>
var parts1 = "26/07/2020".split('/');
var parts2 = "26/07/2020".split('/');
var latest = false;
if (parseInt(parts1[2]) > parseInt(parts2[2])) {
latest = true;
} else if (parseInt(parts1[2]) == parseInt(parts2[2])) {
if (parseInt(parts1[1]) > parseInt(parts2[1])) {
latest = true;
} else if (parseInt(parts1[1]) == parseInt(parts2[1])) {
if (parseInt(parts1[0]) >= parseInt(parts2[0])) {
latest = true;
}
}
}
return latest;
</code></pre>
于 2020-07-23T18:38:09.673 に答える