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

时间:2016-06-10 09:24:13

标签: android date

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

1 个答案:

答案 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

我希望它有所帮助。