2

こんにちは、ライブラリを使用せずに日付範囲を反復処理したいと考えています。私は 18/01/2005 (yyyy/M/d にフォーマットしたい) から開始し、現在の日付まで日間隔で繰り返します。開始日をフォーマットしましたが、それをカレンダー オブジェクトに追加して反復する方法がわかりません。誰かが助けてくれるかどうか疑問に思っていました。ありがとう

String newstr = "2005/01/18";
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/M/d");
4

3 に答える 3

6
Date date = format1.parse(newstr);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
while (someCondition(calendar)) {
    doSomethingWithTheCalendar(calendar);
    calendar.add(Calendar.DATE, 1);
}
于 2013-01-21T20:56:01.917 に答える
1

SimpleDateFormat文字列をオブジェクトに解析するDateか、オブジェクトを文字列にフォーマットするために使用しDateます。

Calendar日付演算にはクラスを使用します。addたとえば、日を使用してカレンダーを進めるメソッドがあります。

上記のクラスの API ドキュメントを参照してください。

または、これらの作業を容易にするJoda Timeライブラリを使用します。(標準 Java API のDateおよびCalendarクラスには多くの設計上の問題があり、Joda Time ほど強力ではありません)。

于 2013-01-21T20:57:07.917 に答える
-2

Java、そして実際には多くのシステムは、UTC 1970 年 1 月 1 日午前 12:00 からのミリ秒数として時間を格納します。この数値は long として定義できます。

//to get the current date/time as a long use
long time = System.currentTimeMillis();

//then you can create a an instance of the date class from this time.
Date dateInstance = new Date(time);

//you can then use your date format object to format the date however you want.
System.out.println(format1.format(dateInstance));

//to increase by a day, notice 1000 ms = 1 second, 60 seconds = 1 minute,
//60 minutes = 1 hour 24 hours = 1 day so add 1000*60*60*24 
//to the long value representing time.
time += 1000*60*60*24;

//now create a new Date instance for this new time value
Date futureDateInstance = new Date(time);

//and print out the newly incremented day
System.out.println(format1.format(futureDateInstance));
于 2013-01-21T21:12:04.647 に答える