计算给定两个日期的日期,不包括 android 中的周末



嗨,我对 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();
        }
    }

排除周末的想法是使用 :

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

我希望它有所帮助。

最新更新