java - 如何在java中获取两个日期之间的星期六和星期日

标签 java android

<分区>

StartDate:  2016-05-8 20:16:00;
EndDate:    2016-05-30 20:16:00;


     public int saturdaysundaycount(Date d1, Date d2) {
                Calendar c1 = Calendar.getInstance();
                c1.setTime(d1);

                Calendar c2 = Calendar.getInstance();
                c2.setTime(d2);

                int sundays = 0;
                int saturday = 0;

                while (c1.after(c2)) {
                    if (c2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || c2.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
                        sundays++;
                    saturday++;
                    c2.add(Calendar.DATE, 1);
                    c2.add(Calendar.DATE, 1);
                }
                System.out.println(sundays);

                return saturday + sundays;
            }

在此函数中,我试图获取两个日期之间周六和周日的总数。但是,当我超过日期时,结果为零。请指出错误并提出更正建议。

最佳答案

不建议编写完整的程序,但由于您付出了努力,这似乎是在我的系统上运行并返回值 7 的程序。

public class CountWeekends {

    public static void main(String[] args){

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        int count = 0;
        try {
            Date d1 = formatter.parse("2016-05-8 20:16:00");
            Date d2 = formatter.parse("2016-05-30 20:16:00");
            count = saturdaysundaycount(d1,d2);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("Count of Sats & Sundays = "+count);
    }

    public static int saturdaysundaycount(Date d1, Date d2) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(d1);

        Calendar c2 = Calendar.getInstance();
        c2.setTime(d2);

        int sundays = 0;
        int saturday = 0;

        while (! c1.after(c2)) {
            if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY ){
                saturday++; 
            }
            if(c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
                sundays++;
            }

            c1.add(Calendar.DATE, 1);
        }

        System.out.println("Saturday Count = "+saturday);
        System.out.println("Sunday Count = "+sundays);
        return saturday + sundays;
    }

Logic: You need to keep increment start date by one day till it surpasses end date and keep checking day on start date.

关于java - 如何在java中获取两个日期之间的星期六和星期日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38450625/

相关文章:

java - 更改javafx图表中标签的字体大小

java - Spring Data 不处理 Pageable Action 参数创建

java - 为什么 Jackson ObjectMapper 会抛出 ClassNotFoundException?

java - 如何将 java.sql.Date 转换为 dd/MM/yyyy 格式的 java.util.Date?

java - 如何在我的 Android 应用程序中截取屏幕截图

java - 使用 JAXB 解码具有相同名称的 XML 标签

java - retrofit 时禁用 SPDY 连接

android - 我可以在没有谷歌服务的设备上使用谷歌Firestore吗?

java - 如何使用 Intellij 将 Android Gradle 项目从 Windows 导入 Linux,而不会出现 keystore 问题

android - FileOutputStream 类型中的方法 write(byte[]) 不适用于参数 (Drawable)