重複の可能性:
2つのJava Dateインスタンス間の差異の計算
Javaで2つの日付間の日数を取得するにはどうすればよいですか?
最良の方法は何ですか?ここに私が得たものがありますが、それは最高ではありません:
public static ConcurrentHashMap<String, String> getWorkingDaysMap(int year,
int month, int day){
int totalworkingdays=0,noofdays=0;
String nameofday = "";
ConcurrentHashMap<String,String> workingDaysMap =
new ConcurrentHashMap<String,String>();
Map<String,String> holyDayMap = new LinkedHashMap<String,String>();
noofdays = findNoOfDays(year,month,day);
for (int i = 1; i <= noofdays; i++) {
Date date = (new GregorianCalendar(year,month - 1, i)).getTime();
// year,month,day
SimpleDateFormat f = new SimpleDateFormat("EEEE");
nameofday = f.format(date);
String daystr="";
String monthstr="";
if(i<10)daystr="0";
if(month<10)monthstr="0";
String formatedDate = daystr+i+"/"+monthstr+month+"/"+year;
if(!(nameofday.equals("Saturday") || nameofday.equals("Sunday"))){
workingDaysMap.put(formatedDate,formatedDate);
totalworkingdays++;
}
}
return workingDaysMap;
}
public static int findNoOfDays(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, day);
int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
return days;
}
私は通常次のようなことをします:
final long DAY_IN_MILLIS = 1000 * 60 * 60 * 24;
int diffInDays = (int) ((date1.getTime() - date2.getTime())/ DAY_IN_MILLIS );
外部libは必要なく、十分簡単
更新:ちょうど「日付」も欲しいと思ったところ、同様の方法が適用されます:
//assume date1 < date2
List<Date> dateList = new LinkedList<Date>();
for (long t = date1.getTime(); t < date2.getTime() ; t += DAY_IN_MILLIS) {
dateList.add(new Date(t));
}
もちろん、JODA時間または他のlibを使用すると、あなたの人生が少し楽になるかもしれませんが、現在の方法を実装するのは難しいとは思いません
更新:重要な注意!これは、夏時間または同様の調整がないタイムゾーンでのみ機能します。または、「日数の差」の定義は、実際には「24時間単位の差」を意味します
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加