javaで取得した日付の差

1923 ワード

転載は出典を明記してください。ありがとうございます。http://blog.csdn.net/harryweasley/article/details/42121485
差を計算したいと思ったら、私達は間違いなく「2014.2.14」-「2014.2.20」=4と思っていますが、javaは直接私達にこのような方法をくれていません。だから、文字列をDateのタイプに変換して、その後また
dateはCalendarタイプに転化し、Calendar.add()法によりこの方法を解決する。
package lgx.java.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class DataDemo {
	public static void main(String[] args) throws ParseException {

		String firstTime = "2014.12.24 ";
		String secondTime = "2014.12.20";

		System.out.println(getDay(firstTime, secondTime));
	}

	private static int getDay(String firstTime, String secondTime)
			throws ParseException {
		int day = 0;
		//   Calendar
		Calendar calendar = new GregorianCalendar();
		Calendar calendar2 = Calendar.getInstance();
		//  SimpleDateFormat       Date  
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
		sdf.parse(firstTime);
		sdf.parse(secondTime);
		
		System.out.println("
" + sdf.parse(firstTime)); System.out.println("
" + sdf.parse(secondTime)); // Date Calendar calendar.setTime(sdf.parse(firstTime)); calendar2.setTime(sdf.parse(secondTime)); while (calendar.compareTo(calendar2) > 0) { //Calendar +1 calendar2.add(Calendar.DATE, 1); day++; } return day; } }
出力結果は
      Wed Dec 24 00:00:00 CST 2014

      Sat Dec 20 00:00:00 CST 2014
4
注意:
SimpleDateFormat sdf=new SimpleDateFormat("yyy.MM.dd")
sdf.parse(firstTime)ここで言わなければならないのですが、変換された文字列とsimpleDateFormatが必ず同じであれば、私は先ほどミスを犯しました。SimpleDateFormat sdf=new SimpleDateFormat(yyyy-M-dd);このように書くと、異常な投げ方をします。
コードにコメントがありますので、よく見られます。
javaの日付に関するカテゴリについては、ここをクリックしてください。http://blog.csdn.net/harryweasley/article/details/41977633