3つの日付すべてがjava.util.Date
のインスタンスで表される場合、日付が2つの他の日付の間にあるかどうかを確認するにはどうすればよいですか?Javaで日付が2つの日付の間にあるかどうかを確認するにはどうすればよいですか?
答えて
あなたが最小/最大は
Date a, b; // assume these are set to something
Date d; // the date in question
return a.compareTo(d) * d.compareTo(b) > 0;
値の順序がわからない場合は、範囲はここ
return a.compareTo(d) * d.compareTo(b) >= 0;
ので、同様:
はDate min, max; // assume these are set to something
Date d; // the date in question
return d.compareTo(min) >= 0 && d.compareTo(max) <= 0;
あなたがの感覚からエンドポイントを除外する>
の代わりに、>=
、代わりに<=
の<
を使用することができます「との間に。」
ご連絡ありがとうございます。 –
これは必ずしも機能しません。私はDateオブジェクトに対してcompareToを使用する際に問題がありました。 2006年1月1日は私のプログラムの1つで、2006年4月1日の後に明らかでした。 – KitsuneYMG
@KitsuneYMG:次のコードを試して、期待どおりに動作しています: 'Date date1 = new Date(2006、1、1); // 2006年1月1日日付date2 =新しい日付(2006、4、1); // 2006年4月1日System.out.println(date1.compareTo(date2)); // -1 System.out.println(date2.compareTo(date1)); // 1 'となる。あなたは*あなたのために働いていないことをここで分かち合うことができますか? – Gnanam
これはもう少し読みやすいかもしれません:
Date min, max; // assume these are set to something
Date d; // the date in question
return d.after(min) && d.before(max);
非常に健全な9秒の速さ、サー。 –
の間にエンドポイントを含めることができます。この場合、return!d.before(min)&&!d.after(max);を使用できます。 –
@Tetsujin no Oni申し訳ありませんが、良いことは、私は大きな助成金を持っていません。 :) –
あなたはgetTime()
を使用して、返された長いUTC値を比較することができます。
編集する場合は、1970年以前の日付に対処する必要はありません、その場合どのように動作するかわからない。
別のオプション
min.getTime() <= d.getTime() && d.getTime() <= max.getTime()
あなたは、日付/時刻を扱うための本当に良いAPIであるJoda Timeを見てみたいことがあります。あなたの現在の質問への解決のために本当にそれを必要としないのであれば、将来あなたの苦痛を救うために縛られています。
はい私はすぐにジョーダの時間を提案することでしたが、API内で「範囲内」テストをサポートするものは何も表示されません。誰か? – dukedave
私はこの特定の問題のためにJodaを提案していません。すでに多数のソリューションがあるからです。 – willcodejavaforfood
しかし、これを行うためにJoda時間にIntervalを作成します。 – willcodejavaforfood
import java.util.Date;
public class IsDateBetween {
public static void main (String[] args) {
IsDateBetween idb=new IsDateBetween("12/05/2010"); // passing your Date
}
public IsDateBetween(String dd) {
long from=Date.parse("01/01/2000"); // From some date
long to=Date.parse("12/12/2010"); // To Some Date
long check=Date.parse(dd);
int x=0;
if((check-from)>0 && (to-check)>0)
{
x=1;
}
System.out.println ("From Date is greater Than ToDate : "+x);
}
}
これは美しいコードです。これは私が今までに見た中で最も優れた機能の1つです。それは私をたくさん助けました。ありがとうございました! – Bassiuz
包括的になりたい場合は、あなたが行く:
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
String oeStartDateStr = "04/01/";
String oeEndDateStr = "11/14/";
Calendar cal = Calendar.getInstance();
Integer year = cal.get(Calendar.YEAR);
oeStartDateStr = oeStartDateStr.concat(year.toString());
oeEndDateStr = oeEndDateStr.concat(year.toString());
Date startDate = sdf.parse(oeStartDateStr);
Date endDate = sdf.parse(oeEndDateStr);
Date d = new Date();
String currDt = sdf.format(d);
if((d.after(startDate) && (d.before(endDate))) || (currDt.equals(sdf.format(startDate)) ||currDt.equals(sdf.format(endDate)))){
System.out.println("Date is between 1st april to 14th nov...");
}
else{
System.out.println("Date is not between 1st april to 14th nov...");
}
}
ここでは、を使用してこれを行う方法がいくつかあります2.3ライブラリ。
一方の方法は、DateTimeインスタンスの単純なisBefore
とisAfter
メソッドを使用することです。ちなみに、Joda-TimeのDateTimeは、概念上、java.util.Date(宇宙のタイムライン上の瞬間)と似ていますが、タイムゾーンを含んでいます。
もう1つの方法は、Joda-Timeで間隔を作成することです。 contains
メソッドは、指定されたDateTimeがIntervalでカバーされる期間内に発生するかどうかをテストします。インターバルの開始は包括的ですが、エンドポイントは排他的です。このアプローチは、記号「[)
」の「ハーフオープン」として知られています。
次のコード例の両方の方法を参照してください。
java.util.DateインスタンスをJoda-Time DateTime
インスタンスに変換します。単にDateインスタンスをDateTimeのコンストラクタに渡します。実際には、JVMのデフォルトのタイムゾーンに頼るのではなく、特定のDateTimeZone
オブジェクトも渡す必要があります。代わりに、コンソールにisAfter/isBefore ...
Interval interval = new Interval(dateTime1, dateTime3);
boolean intervalContainsDateTime2 = interval.contains(dateTime2);
ダンプの間隔アプローチを使用する前に/後...
boolean is1After2 = dateTime1.isAfter(dateTime2);
boolean is2Before3 = dateTime2.isBefore(dateTime3);
boolean is2Between1And3 = ((dateTime2.isAfter(dateTime1)) && (dateTime2.isBefore(dateTime3)));
のためにテストすることにより、比較
DateTime dateTime1 = new DateTime(new java.util.Date()).minusWeeks(1);
DateTime dateTime2 = new DateTime(new java.util.Date());
DateTime dateTime3 = new DateTime(new java.util.Date()).plusWeeks(1);
...
System.out.println("DateTimes: " + dateTime1 + " " + dateTime1 + " " + dateTime1);
System.out.println("is1After2 " + is1After2);
System.out.println("is2Before3 " + is2Before3);
System.out.println("is2Between1And3 " + is2Between1And3);
System.out.println("intervalContainsDateTime2 " + intervalContainsDateTime2);
実行時...
DateTimes: 2014-01-22T20:26:14.955-08:00 2014-01-22T20:26:14.955-08:00 2014-01-22T20:26:14.955-08:00
is1After2 false
is2Before3 true
is2Between1And3 true
intervalContainsDateTime2 true
ここで今日は2ヶ月の間にあるかどうかを見つける方法は次のとおりです。
private boolean isTodayBetween(int from, int to) {
if (from < 0 || to < 0 || from > Calendar.DECEMBER || to > Calendar.DECEMBER) {
throw new IllegalArgumentException("Invalid month provided: from = " + from + " to = " + to);
}
Date now = new Date();
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(now);
int thisMonth = cal.get(Calendar.MONTH);
if (from > to) {
to = to + Calendar.DECEMBER;
thisMonth = thisMonth + Calendar.DECEMBER;
}
if (thisMonth >= from && thisMonth <= to) {
return true;
}
return false;
}
と同じようにそれを呼び出す:エンドポイントを含む日付の間
isTodayBetween(Calendar.OCTOBER, Calendar.MARCH)
が
public static boolean isDateInBetweenIncludingEndPoints(final Date min, final Date max, final Date date){
return !(date.before(min) || date.after(max));
}
のように記述することができます
- 1. PHP - 日付が2つの既存の日付の間にあるかどうかを確認するにはどうすればよいですか?
- 2. 日付が2つの日付の間にあるかどうかを確認する方法mysql?
- 3. Scalaで日付が2つの日付の間にある場合、どうすればいいですか
- 4. ORACLE - 日付と日付の間の2つの日付を確認するにはどうすればよいですか?
- 5. 日付が2つの範囲(ReactJS/JavaScript)の間にあるかどうかを確認するにはどうすればよいですか?
- 6. 日付が日付範囲内にあるかどうかを確認する
- 7. 2つの日付が同じ日にあるかどうかを確認するにはどうすればいいですか?
- 8. 現在の日付が別の日付であるかどうかを確認
- 9. C#現在の文字列である日付が今日であるかどうかを確認するにはどうすればよいですか?
- 10. FSCalendar:2つの日付で日付を取得するにはどうすればよいですか?
- 11. 日付が正しいかどうかを確認するにはどうすればいいですか?
- 12. 日付がもう2つの他の日付であるかどうかを確認する方法と、使用された時間と残り時間?
- 13. 日付が他の日付の同じ日にあるかどうかを確認する方法
- 14. 特定の日付間の日付でSQL結合を行うにはどうすればよいですか?
- 15. Javascript - 現在の時刻が2つの日付の間にあるかどうかを確認する方法
- 16. 日付がGroovyの2つの日付の間にあるかどうかを確認する方法はありますか?
- 17. 時間のある2つの日付の違いをカスタム形式で時間単位で確認するにはどうすればよいですか?
- 18. 月と年が2つの日付の間にあるかどうかを確認する方法
- 19. 日付がPythonの2つの日付の間にあるかどうかをチェックする方法
- 20. 日付を日付の列に追加し、2つの日付の間にあるかどうかを確認します。SQL
- 21. タイムゾーンでJavaScript日付をJava日付時刻に変換するにはどうすればよいですか?
- 22. Djangoスケジューリング、日付が2つの日付の間にあるかどうかをチェックする方法
- 23. 日付PHPオブジェクトに日を追加し、それが2つの日付オブジェクトの間にあるかどうかを確認してください
- 24. 日付/期間が別の日付/期間内にあるかどうかを確認する - より洗練された解決策が可能ですか?
- 25. Jinja2テンプレートで2つの日付の差が> 1か<1か月かどうかを確認するにはどうすればいいですか?
- 26. 日付が今から7日以内であるかどうかを確認
- 27. 今日まで日付を日付ピッカーで無効にするにはどうすればよいですか?
- 28. JavaScriptまたはjQueryの日付ピッカーで2つの日付の間の日を見つけるにはどうすればよいですか?
- 29. 2つの日付間でオブジェクトの配列をフィルタリングするにはどうすればよいですか?
- 30. 日の2つの日付の違いを調べるにはどうすればよいですか?
動作しますが、読み込みはできません。とにかくありがとう。 –
@BrunoDeFreitasBarros「読み込み不可」とはどういう意味ですか? –
@Peter Lawrey Brunoは、コメントなしでコードを理解することは難しいことを意味します。 – Mirimas