1。Javaの日付の概要<br />日付は、Javaの非常に複雑なコンテンツです。さまざまな言語環境と国の環境での日付の日付、日付の国際化、日付と時間の変換、日付の追加と減算、および日付の表示形式はすべて非常に複雑な問題です。
Javaでは、操作日には主に次のクラスが含まれます。
1。Java.util.date
クラスの日付は、ミリ秒に正確な特定のモーメントを表します。 JDK 1.1から始めて、カレンダークラスを使用して日付フィールドと時刻フィールド間の変換を実装する必要があります。日付のクラスを使用して、日付文字列をフォーマットおよび分析する必要があります。日付を年、月、日、時間、分、2番目の値として解釈する日付は放棄されます。
2。java.text.dateformat(要約クラス)
DateFormatは、言語に依存しない方法で日付または時間をフォーマットおよび分析するサブクラスの日付/時刻のフォーマットの抽象的なクラスです。日付/時刻のフォーマットサブクラス(SimpleDateFormatなど)により、フォーマット(つまり、日付 - >テキスト)、分析(テキスト>日付)、標準化が可能になります。日付は、日付オブジェクトとして、またはGMT(GMT)1970、1月1日、00:00:00の瞬間から始まるミリ秒数として示します。
3。java.text.simpledateformat(dateformat direct subclass)
SimpleDateFormatは、日付をロケール関連の方法でフォーマットおよび分析する特定のクラスです。フォーマット(日付 - >テキスト)、分析(テキスト>日付)、および正規化を許可します。
SimpleDateFormatを使用すると、ユーザー定義の日時形式モードを選択できます。ただし、GetTimeInstance、getDateInstance、またはgetDateTimeInstanceをDateFormatで使用して、新しいデートタイムフォーマッタを作成することをお勧めします。
4。Java.util.calendar(要約クラス)
カレンダークラスは、特定のモーメントを年、月、day_of_month、時間などの一連のカレンダーフィールドに変換する方法を提供する抽象クラスであり、来週の日付を取得するなどのカレンダーフィールドを操作するためのいくつかの方法を提供します。インスタントは、エポックからのオフセットであるミリ秒値として表現できます(つまり、00:00:00.000、GMT、1970年1月1日、GMT)。
他のロケールに敏感なクラスと同様に、カレンダーは、このタイプの共通オブジェクトを取得するためのクラスメソッドgetInstanceを提供します。カレンダーのgetInstanceメソッドは、カレンダーフィールドが現在の日付と時刻によって初期化されたカレンダーオブジェクトを返します。
5。java.util.gregoriancalendar(カレンダーの直接サブクラス)
グレゴリアンカレンダーは、世界のほとんどの国で使用される標準的なカレンダーシステムを提供する具体的なカレンダーのサブクラスです。
グレゴリアンカレンダーは、単一の不連続をサポートするジュリアンとグレゴリオのカレンダーシステムの両方をサポートするハイブリッドカレンダーです。デフォルトでは、グレゴリオ暦が設立されたグレゴリオの日付に対応しています(一部の国は1582年10月15日に設立されました。 SetGregorianChange()を呼び出すと、発信者が開始日を変更できます。
2。java.util.dateの使用
1。java.util.dateのAPIの紹介
クラスjava.util.dateは、ミリ秒に正確な特定のモーメントを表します。多くの方法が提供されていますが、多くは時代遅れであり、推奨されていません。次のリストには、時代遅れではないメソッドのみがリストされています。
建設方法の概要
--------------------------
日付()
日付オブジェクトを割り当て、現在の時間にこのオブジェクトを初期化して、割り当てられた時間を示します(ミリ秒に正確)。
日付(長い日付)
日付オブジェクトを割り当て、このオブジェクトを初期化して、標準のベンチマーク時間(「エポック」と呼ばれる、つまり1970年1月1日に00:00:00 GMT)以降の指定されたミリ秒数を表します。
メソッドの概要
--------------------------
ブールアフター(日付)
この日付が指定された日付の後であるかどうかをテストします。
前のブール(日付)
この日付が指定された日付の前であるかどうかをテストします。
オブジェクトクローン()
このオブジェクトのコピーを返します。
int Compareto(別の日付)
2つの日付の順序を比較します。
ブールエコール(オブジェクトOBJ)
2つの日付の平等を比較します。
long gettime()
1970年1月1日以降、この日付オブジェクトで表されるミリ秒数を返します00:00:00 GMT。
int hashcode()
このオブジェクトのハッシュコード値を返します。
void Settime(長時間)
この日付オブジェクトを設定して、1970年1月1日の00:00:00 gmt以降の時刻の時点を表す。
string toString()
この日付オブジェクトを次の形式の文字列に変換します:dow mon dd hh:mm:ss zzz yyyy場所:
ダウは週の1日です(太陽、月、火、水、木、金、土)。
月は月です(1月、2月、3月、4月、5月、6月、8月、9月、10月、11月、12月)。
DDは、2桁の10進数として表示される1月(01〜31)の1日です。
HHは1日の時間(00〜23)で、2桁の10進数として表示されます。
mmは時間の分(00〜59)であり、2桁の小数点以下として表示されます。
SSは1分間の秒数(00〜61)で、2桁の10進数として表示されます。
ZZZはタイムゾーンです(そして夏時間を節約することを反映しています)。標準のタイムゾーンの略語には、メソッドの解析によって認識されるタイムゾーンの略語が含まれます。タイムゾーン情報が提供されていない場合、ZZZは空です。つまり、文字がまったく含まれていません。
Yyyyは1年で、4桁の10桁の数字として表示されます。
日付クラスの包括的な例を次に示します。
public class testdate {public static void main(string [] args){testdate testdate = new testdate(); testdate.getSystemCurrentTime(); testdate.getCurrentDate(); } / ***現在のシステム時間を取得* System.CurrentTimemillis()は現在のシステム時間を返し、結果は1970年1月1日に0:00:00に始まります。プログラムの実行と取得までのミリ秒数は経過し、1秒= 1000ミリ秒* /公開されています。 時間 - -"); system.out.println(system.currenttimemillis()); } public void getCurrentDate(){system.out.println( "---システムの現在の時間を取得---"); //日付を作成して初期化します(初期値は現在の日付です)日付= new Date(); system.out.println( "現在の日付は=" + date.toString()); System.out.println( "1970年1月1日以降に経験したミリ秒の数=" + date.getTime()); }} 2。java.text.dateformat抽象クラスの使用
DateFormatは、言語に依存しない方法で日付または時間をフォーマットおよび分析するサブクラスの日付/時刻のフォーマットの抽象的なクラスです。日付/時刻のフォーマットサブクラス(SimpleDateFormatなど)により、フォーマット(つまり、日付 - >テキスト)、分析(テキスト>日付)、標準化が可能になります。日付は、日付オブジェクトとして、またはGMT(GMT)1970、1月1日、00:00:00の瞬間から始まるミリ秒数として示します。
DateFormatは、デフォルトまたは指定されたロケールおよび複数のフォーマットスタイルに基づいてデフォルトの日付/時刻のフォーマッタを取得するための多くのクラスメソッドを提供します。フォーマットスタイルには、フル、ロング、ミディアム、ショートが含まれます。これらのスタイルを使用する詳細と例は、メソッドの説明に記載されています。
DateFormatは、ロケールの日付のフォーマットと分析を支援します。数ヶ月、数週間、さらにはカレンダー形式(月と太陽カレンダー)でさえ、コードはロケールの慣習とはまったく関係ありません。
現在のロケールで日付をフォーマットするには、静的な工場法を使用します。
mystring = dateformat.getDateInstance()。形式(mydate);
複数の日付をフォーマットする場合、形式を取得して複数回使用する方が効率的であるため、システムは環境言語と国家契約に関する情報を複数回取得する必要がありません。
dateformat df = dateformat.getDateInstance(); for(int i = 0; i <mydate.length; ++ i){output.println(df.format(mydate [i]) +";"); }
さまざまなロケールの日付をフォーマットするには、getDateInstance()への呼び出しで指定します。
dateformat df = dateformat.getDateInstance(dateFormat.Long、locale.France);
DateFormatは分析にも使用できます。
mydate = df.parse(mystring);
getDateInstanceを使用して、その国の標準日付形式を取得します。他のいくつかの静的な工場メソッドも提供されています。 GetTimeInstanceを使用して、その国の時間形式を取得します。 getDateTimeInstanceを使用して、日付と時刻の形式を取得します。さまざまなオプションをこれらの工場の方法に渡すことができ、結果の長さを制御することができます(短期から中から長いものから長いものまで)。正確な結果はロケールに依存しますが、通常:
ショートは完全に数字です。これは12.13.52または午後3時30分
1952年1月12日など、媒体は長いです
1952年1月12日や午後3時30分など、長いです
1952年4月12日火曜日や午後3時30分42分など、フルは完全に指定されています。
必要に応じて、形式にタイムゾーンを設定することもできます。フォーマットまたは分析にもっとコントロールを課したい場合(または、ユーザーにより多くの制御を提供する)、工場メソッドから取得したDateFormatをCasting of SimpledateFormatにキャストしてみてください。これはほとんどの国で機能します。特別な形式の場合は、トライブロックに入れてください。
また、分析とフォーマット方法をパーセポジションとフィールドポジションを使用して、文字列の部分を段階的に分析することもできます。特定のフィールドを調整するか、画面上で文字列が選択されている場所を見つけます。
DateFormatは同期していません。各スレッドの独立したフォーマットインスタンスを作成することをお勧めします。複数のスレッドが同時に形式にアクセスする場合、外部的に同期したままでなければなりません。
3。Java.text.simpledateformat(dateformat direct subclass)の使用
SimpleDateFormatは、日付をロケール関連の方法でフォーマットおよび分析する特定のクラスです。フォーマット(日付 - >テキスト)、分析(テキスト>日付)、および正規化を許可します。
SimpleDateFormatを使用すると、ユーザー定義の日時形式モードを選択できます。ただし、GetTimeInstance、getDateInstance、またはgetDateTimeInstanceをDateFormatで使用して、新しいデートタイムフォーマッタを作成することをお勧めします。このようなクラスの各メソッドは、デフォルトのフォーマットモードで初期化された日付/時刻のフォーマッタを返すことができます。フォーマットパターンは、必要に応じてApplyPatternメソッドを使用して変更できます。これらのメソッドの使用の詳細については、DateFormatを参照してください。
日付と時刻モード
日付と時刻形式は、日付と時刻のパターン文字列によって指定されます。日付と時刻のパターン文字列では、引用されていない文字「a」と「z」と「a」から「z」は、日付または時刻の文字列要素を表すパターン文字として解釈されます。説明を避けるために、テキストを単一の引用( ')に囲むことができます。 "''"は単一の引用を意味します。他のすべての文字は解釈されません。フォーマット時に出力文字列に単純にコピーされるか、分析時に入力文字列に一致します。
参照情報については、JDK APIドキュメントを表示できます。包括的な例は次のとおりです。
public class testDateFormat {public static void main(string [] args)throws parseexception {testDateFormat tdf = new testDateFormat(); tdf.dateformat(); } /*** simpledateFormat class* @Throws parseexception* /public void dateformat()throws parseexception {//日付date date = new date(); //異なる日付形式を作成しますdateformat df1 = dateformat.getInstance(); dateformat df2 = new SimpledateFormat( "yyyy-mm-01 HH:mm:ss ee"); dateformat df3 = dateformat.getDateInstance(dateFormat.full、locale.china); //指定された国の指定された長さで日付形式を作成します。長さは異なり、表示される日付の完全性も異なります。 dateformat df4 = new simpledateFormat( "yyyyy year mm month dd dd day hh時間mm ming ss sense ee"、locale.china); dateformat df5 = new SimpledateFormat( "yyyy-mm-dd hh:mm:ss eeeee"、locale.us); dateformat df6 = new SimpledateFormat( "yyyy-mm-dd"); //異なる形式の出力日 System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- df3.format(date)); df5.format(date));日付日付2 = df2.parse( "2016-01-24 02:51:07日曜日");日付date3 = df3.parse( "2016-01-24");日付日付4 = df4.parse( "2016-01-24 02:51:18日曜日");日付6 = df6.parse( "2016-01-24"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println(date1); system.out.out.out.println(date4); 4。Java.util.calendar(要約クラス)
java.util.calendarは、システム時間の抽象的な表現である抽象クラスです。特定のモーメントを年、月、day_of_month、時間などの一連のカレンダーフィールドに変換する方法を提供し、カレンダーフィールドを操作するためのいくつかの方法(来週の日付の取得など)を提供します。インスタントは、エポックからのオフセットであるミリ秒値として表現できます(つまり、00:00:00.000、GMT、1970年1月1日、GMT)。
他のロケールに敏感なクラスと同様に、カレンダーは、このタイプの共通オブジェクトを取得するためのクラスメソッドgetInstanceを提供します。カレンダーのgetInstanceメソッドは、カレンダーフィールドが現在の日付と時刻によって初期化されたカレンダーオブジェクトを返します。
カレンダーのインスタンスは、システム時間の抽象的な表現です。カレンダーのインスタンスから、年、月、日、週、月、月などの情報を知ることができます。カレンダークラスには静的メソッドGET(int x)があります。この方法により、関連するインスタンスの情報(年、月、日、週、月など)情報を取得できます。パラメーターXは、カレンダーで定義されている降伏値です。
カレンダーのいくつかのトラップは簡単に落ちる可能性があります:
1。カレンダーの週は日曜日に始まり、一定の値は0です。
2。カレンダーの月は1月から始まり、一定の値は0です。
3。毎月のカレンダーの初日は1です。
5。java.util.gregoriancalendar(カレンダーの直接サブクラス)
グレゴリアンカレンダーは、世界のほとんどの国で使用される標準的なカレンダーシステムを提供する具体的なカレンダーのサブクラスです。カレンダー抽象クラスと組み合わせて使用。
カレンダークラスの使用を確認するための包括的な例を次に示します。
public class testcalendar {public static void main(string [] args)throws parseexception {testCalendar testCalendar = new testCalendar(); testcalendar.testcalendar(); testcalendar.testcalendar2(); } public void testcalendar(){//カレンダーカレンダーを作成する方法now1 = calendar.getInstance();カレンダーnow2 = new GregorianCalendar(); Calendar Now3 = New GregorianCalendar(2016、01、24);カレンダーNow4 =新しいグレゴリアンカレンダー(2016、01、24、15、55); //トレイル:カレンダーの月は0〜11カレンダーnow5 =新しいグレゴリアンカレンダー(2016、01、24、15、55、44);カレンダーNow6 =新しいグレゴリアンカレンダー(locale.us);カレンダーNow7 =新しいGregorianCalendar(TimeZone.getTimeZone( "GMT-8:00")); // now2.settime(new date())を設定します。 System.out.println(now2); now2.settimeinmillis(new date()。gettime()); System.out.println(now2); //日付の中国出力形式を定義し、日付を出力しますsimpledateformat df = new simpledateFormat( "yyyy year mm month dd day hh時間mm分ss秒e"、locale.china); System.out.println( "日付の中国形式の出力を取得:" + df.Format(now5.getTime())); System.out.println(); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System; System.out.println("Get year: " + now5.get(Calendar.YEAR)); System.out.println("Get month (month starts from 0): " + now.get(calender.month)); Now.get(Calender.second)); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 「3月」、「4月」、「5月」、「6月」、「7月」、「8月」、「9月」、「10月」、「11月」、「12月」}; System.out.println( "Now5 Object's Month is:" + months [now5.get(calendar.month)]); } public void testcalendar2()throws parseexception {//今月のカレンダーの最大日数を取得cal = calendar.getInstance(); int maxday = cal.getactualmaximum(calendar.day_of_month); int mindday = cal.getactualminimum(calendar.day_of_month); System.out.println(maxday); //月の最終日を取得しますdateformat formatter3 = new SimpledateFormat( "yyyy-mm-"+maxday); system.out.println(format3.format(cal.gettime())); //月の最終日を取りますdateformat formatter4 = new SimpledateFormat( "yyyy-mm-"+minday); system.out.println(formatter4.format(cal.gettime())); // 2つの日付の間の日数java.text.simpledateformat format = new java.text.simpledateformat( "yyyy-mm-dd"); java.util.date begindate = format.parse( "2007-12-24"); java.util.date enddate = format.parse( "2007-12-25"); long day =(enddate.getTime() - begindate.getTime())/(24*60*60*1000); System.out.println( "日数="+day); //日付1年前java.text.format formatter5 = new java.text.simpledateformat( "yyyy-mm-dd"); java.util.date todaydate = new java.util.date(); long beforetime =(todanydate.getTime()/1000)-60*60*24*365; TodayDate.settime(beforetime*1000); string beforedate = formatter5.format(todaydate); System.out.println(beforedate);カレンダーカレンダー= calendar.getInstance(); calendar.add(calendar.year、-1); system.out.println(formatter5.format(calendar.gettime())); //今週の月曜日と日曜日SimpledateFormat dateFormat = new SimpledateFormat( "yyyymmdd"); GregorianCalendar GregorianCalendar = New GregorianCalendar(); int dayinweek = gregoriancalendar.get(calendar.day_of_week); int offset = 0; if(dayinweek == 1){//日曜日のオフセット= 6; } else {//月曜日から土曜日のオフセット= dayinweek -2; } gregoriancalendar.add(gregoriancalendar.day_of_month、-offset); string sday = dateformat.format(gregoriancalendar.gettime()); gregoriancalendar.add(gregoriancalendar.day_of_month、6); string eday = dateformat.format(gregoriancalendar.gettime()); System.out.println( "今週の月曜日:" + sday); System.out.println( "今週の日曜日:" + eday); }}3。概要
多くの場合、Javaには日付の5つの側面があります。
1。作成日
2。日付形式の表示
3。日付変換(主に文字列による相互変換)
4.中年、月、日、時間、分、週、月、月などの日付を取得します。
5。日付のサイズと追加と日付の減算の比較。
上記は、あなたのために要約されたJavaの日付と時刻の使用方法です。それがあなたの学習に役立つことを願っています。