Androidは2つの日付の間の日数を計算し、すべての日付を印刷します.
2248 ワード
次のコードは、2つの日付の間の日数を計算し、すべての日付を印刷します.
注:開始時、日数を増加する時、1日のミリ秒数は直接24*60*60*1000で徐々に日数を増加して、更にテストする時発見して、2つの日付の間の日数が24日を超える時、印刷する日付はかえって開始日の前で、(例えば2016/12/18-2017/1/23を印刷して、印刷する日付はかえって2016/12/1がある)、後で発見した原因は24*60*60*1000が1つのint値で、int値の取値範囲は2の31回である:+/-2147483648で、最大数を超えると最小数になり、逆に日付が小さくなり、24*60*60*1000をlongタイプの値にすればよい.private long static final long ONE_DAY_MS=24*60*60*1000
注:開始時、日数を増加する時、1日のミリ秒数は直接24*60*60*1000で徐々に日数を増加して、更にテストする時発見して、2つの日付の間の日数が24日を超える時、印刷する日付はかえって開始日の前で、(例えば2016/12/18-2017/1/23を印刷して、印刷する日付はかえって2016/12/1がある)、後で発見した原因は24*60*60*1000が1つのint値で、int値の取値範囲は2の31回である:+/-2147483648で、最大数を超えると最小数になり、逆に日付が小さくなり、24*60*60*1000をlongタイプの値にすればよい.private long static final long ONE_DAY_MS=24*60*60*1000
/**
*
* @param startTime
* @param endTime
*/
private void betweenDays(long startTime,long endTime,long mills_select,int code){
Date date_start=new Date(startTime);
Date date_end=new Date(endTime);
// 0
Calendar fromCalendar = Calendar.getInstance();
fromCalendar.setTime(date_start);
fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
fromCalendar.set(Calendar.MINUTE, 0);
fromCalendar.set(Calendar.SECOND, 0);
fromCalendar.set(Calendar.MILLISECOND, 0);
Calendar toCalendar = Calendar.getInstance();
toCalendar.setTime(date_end);
toCalendar.set(Calendar.HOUR_OF_DAY, 0);
toCalendar.set(Calendar.MINUTE, 0);
toCalendar.set(Calendar.SECOND, 0);
toCalendar.set(Calendar.MILLISECOND, 0);
int s = (int) ((toCalendar.getTimeInMillis() - fromCalendar.getTimeInMillis())/ (ONE_DAY_MS));
if(s>0){
for(int i = 0;i<=s;i++){
long todayDate = fromCalendar.getTimeInMillis() + i * ONE_DAY_MS;
/**
* yyyy-MM-dd E :2012-09-01
*/
Log.i(" ",Utils.getCustonFormatTime(todayDate,"yyyy-MM-dd"));
}
}else {//
Log.i(" ",Utils.getCustonFormatTime(startTime,"yyyy-MM-dd"));
}
}
Utils.getCustomonFormatTime()メソッドコードは次のとおりです./**
*
*
* @param time
* @param formatStr
* @return
*/
public static String getCustonFormatTime(long time, String formatStr) {
SimpleDateFormat format = new SimpleDateFormat(formatStr);
Date d1 = new Date(time);
return format.format(d1);
}