嗨,我对Android非常新,在我的应用程序中,我必须从“当前”日期“减去”给定日期,这样才有效。
这里我的主要要求是,我不应该算周末(如周日和周六,公众假期),除了周末我必须从“当前”日期“减去”给定日期。
请帮助我一些。
String dateStart = "01/14/2012 09:29:58";
String dateStop = "01/15/2012 12:29:58";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shared_layout);
//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
//in milliseconds
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000) % 24;
long diffDays = diff / (24 * 60 * 60 * 1000);
Log.i("days","=====>"+diffDays);
Log.i("hours", "=====>" + diffHours);
Log.i("minutes", "=====>" + diffMinutes);
Log.i("seconds", "=====>" + diffSeconds);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
排除周末的想法是使用:
if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
++workDays;
}
使用此功能:
public static int countWorkingDate(Date dateStart, Date dateStop) {
Calendar startCal = Calendar.getInstance();
startCal.setTime(dateStart);
Calendar endCal = Calendar.getInstance();
endCal.setTime(dateStop);
int workDays = 0;
//Return 0 if start and end are the same
if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
return 0;
}
if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {
startCal.setTime(dateStop);
endCal.setTime(dateStart);
}
do {
//excluding start date
startCal.add(Calendar.DAY_OF_MONTH, 1);
if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
++workDays;
}
} while (startCal.getTimeInMillis() < endCal.getTimeInMillis()); //excluding end date
return workDays;
}
在onCreate
中执行此示例:
//date example
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
Date dateStart = null;
Date dateStop = null;
try {
dateStart = format.parse("01/14/2012 09:29:58");
dateStop = format.parse("01/22/2012 12:29:58");
} catch (ParseException e) {
e.printStackTrace();
}
int number;
number = countWorkingDate(dateStart,dateStop);
System.out.println(number);
结果是:I/System.out: 6
我希望它有所帮助。