この記事では、カレンダー時間操作の一般的な方法を共有しています。特定のコンテンツは次のとおりです。
パッケージテスト; java.text.simpledateformat;インポートjava.util.calendar;インポートjava.util.date;/** *日付とカレンダーの一般的な方法、多くの日付の方法が非推奨です。現在のシステム時間を取得する日付:結果:5月3日08:25:44 CST 2016date Date = new Date(); //代わりにさまざまなカレンダーの方法を使用することをお勧めします。そのため、記録は作成されません//指定された日付のミリ秒を取得します。これは、2つの日付のサイズを比較するためによく使用されます。 date.getTime(); //カレンダーを使用して現在のシステム時間を取得します。カレンダーオブジェクトを取得して、カレンダーカレンダー= calendar.getInstance()に変換する必要があります。週のデフォルトの最初の日は日曜日のカレンダーです。getFirstdayofweek(); // 2016calendar.get(1); //カレンダーが日付に変換されるように、現在のカレンダーの日付を返します。結果:月曜日6月3日09:31:59 CST 2013 //すべてのパラメーターはintcalendar.set(2013、5、3)です。 System.out.println(calendar.getTime()); //カレンダーを使用して年を設定し、出力結果を設定します。 2011calendar.set(calendar.month、0); system.out.println(calendar.gettime()); //カレンダーと独自の定数で月を設定します。月は0で始まることに注意してください。カレンダーと数字で1日を設定し、出力結果:2月05日09:48:25 CST 2011 // Calendar.set(Calendar.day_of_month、5)結果は同じです。 Millisecondsカレンダーの数に応じた時間。SettimeInmillis(0); // string to String、出力結果:2016-05-03 09:25:29:29String Fordate = DateToString(New Date()); System.out.Println(Fordate); StringTodate( "2015-11-12 13:23:11"); System.out.println(strdate); //カレンダーからカレンダー、出力結果:2015calendar Calendar2 = dateTocalendar(strdate); out.println(calendary2.get(1));}/*** @ @aid atifed fightの特定のタイプのタイプのタイプのタイプのタイプタイプのタイプのタイプのタイプを変換するtuzongxun* @title:dateToString* @param @param date* @return void* @date 2016年5月3日9:09:25 AM* @Strows*/Static String DatetString(日付){String str = "yyyymm-dd hh:mm:mm:ss"; Simpledateformat format = String format = String-format effredateformat( format.format(date); return dateformat;}/***指定された日付形式の文字列を日付タイプに変換します"yyyy-mm-dd hh:mm:ss"; simpledateformat format = new simpledateformat(str); date date = new date(); try {date = format.parse(string);} catch(ecgetStacktrace();} return date;}/***指定された日付を換気型に変換します。 DateTocalEndar* @Param @Param Date* @return void* @date 2016年5月3日9:13:49 AM* @Throws*/static Calendar DateTocalEndar(日付){カレンダーカレンダー= Calendar.getInStance(); calender.getInstang(日付); returnカレンダー;}}}他にどのような落とし穴がありますか?
ピットはどこですか:
私が前に出会ったプロジェクトでは、私は関数を巻き込みました:いくつかのデータを毎日MongoDBデータベースの別のコレクションに移動すること、つまりリレーショナルデータベースの表。このコレクション名は、固定名であり、2か月前の現在の日付がある年と月です。
この機能は、私がこのプロジェクトに接触する前に存在していました。これは、以前の同僚によって実装された関数であり、Javaタイミングタスクを書きました。
その同僚はもはや私たちの会社にいませんが、最近彼はこの機能にいくつかの問題があることを発見しました。データの動きは予想通りではありません。 2月に存在するはずのデータは、1月のテーブルに掲載されました。
ピットの根:
Mongodb関連の問題は私によって一時的に維持されており、この問題は当然私が解決する必要があるので、私は彼のコードを取り出して読んでいます。その結果、問題は関連するカレンダーの方法であることがわかりました。
2か月前からデータを転送するには、最初に2か月前から日付を取得する必要があります。テーブル名を生成するための関連コードは次のとおりです。
private string getDatacollectionName(){Calendar Calendar = Calendar.GetInstance(); try {calendar.set(calendar.date、-day); 「alarm_」 + toolutils.datetoformatstrdate(calendar.gettime()、 "yyyy_mm")を返します。 } catch(Exception e){logger.error( "{}:data Transforming failed、{}"、this.getClass()。getName()、e.getMessage()); } nullを返します。 }問題は、クエリデータの開始時間と終了時間を後で使用することを含むカレンダーの設定方法にあり、同じことが使用されます。
一見すると、この方法は現在の日付を差し引いて指定された日数を差し引いて日付を設定しているようですが、実際には、2か月前に日付を取得するほど結果は予想されません(ここでは60、つまり2か月を定義します)。
ピットに記入してください:
理由を見つけた後、この方法を置き換えて、セットを変更しました。内部のパラメーターについては、移動されませんでした。結果は、この方法が現在の関数を本当に実現できることを証明し、得られた結果はまさに予想される結果です。
もちろん、カレンダー.set(calendar.date、charend.get(calendar.date)-day)など、メソッドを変更せずにパラメーターをわずかに変更することもできます。
上記はすべてこの記事に関するものであり、カレンダー時間操作の一般的な方法を習得することが誰もが役立つことを願っています。