ホームページ  >  に質問  >  本文

java比较时间

String date1 = “2017-04-06”;
String start = "2017-04";
String end = "2017-06";
java 计算data1是否在start和end之间。start和end即表示的是四月到六月

伊谢尔伦伊谢尔伦2743日前591

全員に返信(5)返信します

  • PHPz

    PHPz2017-04-18 10:55:56

    Java8 を使用していない場合:

    リーリー

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:55:56

    Java8 についてはすでに誰かが言及しているようですが...しかし、この書き方は少しぎこちないです...誰もが基本的に同じ考えを持っています...

    1. 指定された開始時刻を今月の初日に変更する必要があります

    2. 指定された終了時刻を今月の末日に変更する必要があります

    どう変更するかが鍵…Java 8で呼び出せる既製のAPIがある…パースする必要がない…初日から変更してもいいけど、判断が多い最後まで頑張ります

    コードは以下のようになります。与えられた条件に従ってisBetweenメソッドを記述します

    リーリー

    簡単な説明...
    yyyy-mm Java8 には年と月の形式を処理するための新しいクラスがあります。これは YearMonth です (これは TemporalAdjuster 実装クラスです) )、LocalDate (Temporal の実装クラス) の with メソッドによると、実際には Temporal インターフェイスの with メソッドです。 , こちら Java8の新しい時刻APIの設計に伴い、withメソッドの署名は以下の通りですYearMonth(它是一个TemporalAdjuster的实现类),根据LocalDate(它是一个Temporal的实现类)的with方法,其实是Temporal接口的with方法,这里涉及到Java8的新时间API的设计,with方法签名如下

    含义即是:一个Temporal对象可以根据一个TemporalAdjuster对象进行调整

    所以结合到上面写的代码,思路如下

    1. 随意取了当前时间LocalDate A

    2. 把A根据传入的YearMonth进行修改(调用with方法),即调整时间的年和月,得到时间B

    3. 把B再根据一个调整器TemporalAdjusterTemporalAdjusters.firstDayOfMonth),调整时间的日,得到最后的时间

    其实时间调整,在TemporalAdjusters

    意味: Temporal オブジェクトは TemporalAdjuster オブジェクトに従って調整できるです 上で書いたコードと組み合わせると、アイデアは次のようになります

    🎜 🎜🎜現在時刻 LocalDate Aをランダムに取得しました🎜🎜 🎜🎜 YearMonth で渡された値に従って A を変更します (with メソッドを呼び出します)。つまり、時刻の年と月を調整し、時刻 B を取得します🎜🎜 🎜🎜調整者 TemporalAdjuster (TemporalAdjusters.firstDayOfMonth) に従って B を入力し、時刻の日を調整し、最終時刻を取得します🎜🎜 🎜 🎜実際、一般的に使用される時間調整の多くは TemporalAdjusters にカプセル化されています。また、このクラスはシンプルで簡単で使いやすいことに注目してください。 🎜最後に、以前に接続した Java 8 の新しい時間 API の関係をいくつか示します。これらの関係に従って、新しい時間 API が使いやすいだけでなく、その関係を確認することができます。とても強力です🎜 🎜🎜🎜🎜🎜

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:55:56

    Java8を使用している場合:

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:55:56

    Java8 を使用していないが、Joda-time を使用している場合:

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:55:56

    1. end は今月の最終日に変換する必要があります (例: 2017-06-30)。 2017-06-30

    2. 如果格式确定为yyyy-mmyyyy-mm-dd,那么用date.compareTo(start) >= 0 && date.compareTo(end) < 0就可以了;

    3. 如果有不规范的格式,比如2017-4-6

      形式が yyyy-mm または yyyy-mm-dd であると判断された場合は、 date.compareTo(start) >= 0 && date を使用します。 .compareTo(end) <0 は問題ありません。
    2017-4-6 などの非標準形式がある場合は、それを標準形式に変換するか、日付または長い形式 (日付は本質的に長いものです) に変換してから、比較する。 🎜🎜 🎜

    返事
    0
  • キャンセル返事