Javaの開発中、私は必然的に日付タイプに巻き込まれました。プロジェクトがよく使用した日付関連の操作を要約するつもりでした。 JDKバージョン1.7。起きて動き、コーヒーを作るために数分節約できるなら、それは素晴らしいことです。 hehe。もちろん、私は実行可能なソリューションのみを提供しており、ベストプラクティスであることを保証されていません。議論は歓迎されます。
1。日付値
古いJDKの時代には、日付の値に関してjava.util.dateクラスを使用した多くのコードがありました。ただし、日付クラスは国際化を達成するのに便利ではないため、JDK1.1からの時間と日付の処理にjava.util.calendarクラスを使用することをお勧めします。ここで日付クラスの操作は紹介しません。トピックと、カレンダークラスを使用して現在の日付と時刻を取得する方法に直接行きましょう。
カレンダーのコンストラクターメソッドは保護によって変更されるため、APIで提供されるGetInstanceメソッドを介してカレンダーオブジェクトを作成します。
//カレンダーオブジェクトカレンダーを作成するための複数のオーバーロードされたメソッドがあります= calendar.getInstance(); //デフォルト//タイムゾーンと領域を指定するか、パラメーターカレンダーのいずれかを今すぐ入力できます= Calendar.GetInstance(TimeZone、Locale);
次に、オブジェクトを介して現在のさまざまな時間パラメーターを取得できます。
int year = now.get(calendar.year); //、現在の年int month = now.get(calendar.month) +; //、現在の月、int day = now.get(calendar.date)を追加してください。 //、現在の日付日= now.getTime(); //タイプ日付の日付を直接取得します
他のタイプの時間データを取得するには、now.get()でパラメーターを変更する必要があります。上記の3つのパラメーターに加えて、他の一般的に使用されるパラメーターは次のとおりです。
•calendar.day_of_month:日付、calendar.dateと同じ
•カレンダー:12時間
•Calendar.hour_of_day:24時間のシステムの時間数
•カレンダー。マニュート:分
•Calendar.second:秒
•calendar.day_of_week:毎週
時間データの取得に加えて、カレンダーオブジェクトを介してさまざまな時間パラメーターを設定することもできます。
//特定のフィールドの値のみを設定します//年、月、日、時間、月、1日、時間、分、2番目//パブリックファイナルボイドセット(int year、int month、int date [、int hourofday、int minute、int second])now.set(、[、、]); //タイプ日付の日付を直接登録//公開最終void settime(日付日付)now.set(date);
知らせ:
•時間パラメーターが設定されると、その他の関連する値が再計算されます。たとえば、日付を11日に設定すると、対応する変更が週に行われます。
•あなたが取得する月はプラス1です。実際の月は1つです。
•カレンダークラスでは、日曜日は1、月曜日は2などです。
2。日付変換
日付についておしゃべりした後、日付の変換について話しましょう。コンバージョンは、一般に、日付タイプの日付と文字列型文字列の間の相互変換です。主に、変換操作にjava.text.simpledateformatを使用しています。
SimpleDateFormat sdf = new SimpledateFormat( "yyyy-mm-dd hh:mm:ss"); try {// stringカレンダー= calendar.getInstance();日付date = calendar.getTime();文字列datestringparse = sdf.format(date); //文字列to date string dateString datestring = " - ::";日付dateparse = sdf.parse(datestring); } catch(parseexception e){e.printstacktrace(); }知らせ:
•SimpleDateFormatオブジェクトを作成するときは、変換形式を指定する必要があります。
•変換形式はケースに敏感で、yyyyは年を表し、mmは月を表し、DDは日付を表し、HHは2011年の時間を表し、HHは1011の時間を表し、mmは微細な時間、SSは秒を表します。
3。日付の追加と減算
一般的に、日付に2つの追加と減算操作を行います。
•日付に基づいて、日付を前後に、前後に、前後、前後、その後、その後のユニットを計算します。
//今すぐカレンダーを計算します= calendar.getInstance(); now.add(calendar.year、); //現在の時刻の年以降。 //現在の時刻の年前//カレンダーSpecialDate = Calendar.GetInstance()を計算します。 SpecialDate.settime(日付); // SpecialDateの価値は特定の日付SpecialDate.Add(Calendar.year、)に変更されることに注意してください。 //特定の時間SpecialDate.Add(Calendar.Year、 - )の年以降; //特定の時間の年の前
カレンダーオブジェクトの追加方法が使用されることに注意してください。カレンダー.yearをいつでも時間単位フィールドに変更して、さまざまな時間単位で日付計算を完了できます。
•たとえば、2016年1月1日に現在何日があるかなど、2回の間隔を計算します。
SimpleDateFormat sdf = new SimpledateFormat( "yyyy-mm-dd hh:mm:ss");文字列dateString = " - ::";カレンダーカレンダー= calendar.getInstance(); long nowdate = calendar.getTime()。getTime(); //date.getTime()GET MILLISECOND DATE TRY {LONG SPECIALDATE = SDF.PARSE(DATESTRING).GETTIME(); long betweendate =(specialdate -nowdate) /( * * *); //何日離れているかを計算して、Millisecondsの変換式System.out.print(betWeendate)で計算します。 } catch(parseexception e){e.printstacktrace(); } 4。日付の比較
以前のコードを見ると、日付の比較操作を実行するたびに、最初に「yyyymmdd」という形式の文字列に日付を変換し、文字列を値に変換し、値サイズを比較することがわかりました。ははは、それは簡単な比較操作ですが、書くのに12回以上のコードが必要です。これは少し耐えられません。今、私たちは正しい日付の比較姿勢について話さなければなりません。
通常、日付の比較には2つの方法があり、java.util.dateまたはjava.util.calendarに共通しています。 1つは、()after()を介して前()メソッドと比較することであり、もう1つはcomparisonto()メソッドを介して比較()メソッドです。
SimpledateFormat SDF = new SimpleDateFormat( "yyyy-mm-dd HH:mm:mm:ss"); string datestring_01 = "2016-01-01-01-01-01-01-01-01-01-01-01-01-01-01-02 11:11:11"; date {date {date_01 = sdf.parse(dateString_01);日付date_02 = sdf.parse(datestring_02); system.out.println(date_01.before(date_02)); // true、date_01がtrueの日付_02よりも少ない場合、それ以外の場合はfalse system.out.println(date_02.after(date_01)); // true、date_02がdate_01よりも大きい場合、それは本当です。そうしないと、false system.out.println(date_01.compareto(date_02)); // -1、date_01がdate_02未満の場合、それは-1 system.out.println(date_02.compareto(date_01)); // 1、date_02がdate_01よりも大きい場合、それは1 system.out.println(date_02.compareto(date_02));です。 // 0、2つの日付が等しい場合、それは0} catch(parseexception e){e.printstacktrace();}上記は、この記事で紹介されたJavaの一般的な日付操作(価値、変換、追加、減算、比較)の完全な説明です。気に入っていただければ幸いです。