5
回答
java怎么一个月份分成四周
华为云4核8G,高性能云服务器,免费试用   
java怎么一个月份分成四周,例如 2.28可以分成 2.1-2.7 2.8-2.14 2.15-2.21 2.22-2.28 ,如果一周有29,30,31天的多出的归到最后的日期段
举报
554330833a
发帖于2年前 5回/533阅
共有5个答案 最后回答: 2年前
/**
     * 获取某年某月的天数
     *
     * @param year 年
     * @param month 月
     * @return 总天数
     */
    public final static int countDays(int year, int month) {
        int count = -1;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                count = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                count = 30;
                break;
            case 2:
                if (year % 4 == 0) {
                    count = 29;
                } else {
                    count = 28;
                }
                if ((year % 100 == 0) & (year % 400 != 0)) {
                    count = 28;
                }
        }
        return count;
    }
LocalDateTime ldt = LocalDateTime.now();
        int daysOfMonth = countDays(ldt.getYear(), ldt.getMonthValue());

获取一月的总天数后就好办了吧



--- 共有 1 条评论 ---
节节草楼主如果要更简单可以使用jdk8里最新的日期时间API: LocalDate ld = LocalDate.of(year, month, 1); int days = ld.lengthOfMonth(); 2年前 回复
PHP获取月份的天数:
echo date('t', strtotime('2016-02')); //2016年2月的天数
echo date('t'); //当前月份的天数
$last_week_days = date('t') - 21;
--- 共有 16 条评论 ---
节节草回复 @BoXuan : 口误,是也很简单,不是比php的更简单,说清楚点,免得你又喷我 2年前 回复
节节草回复 @宿舍楼顶 : 要不重复造轮子也可以啊,就获取某年某月总共多少天这个问题 LocalDate ld = LocalDate.of(year, month, 1); int days = ld.lengthOfMonth(); java的实现比php的更简单,之所以前面我贴那么一大堆是想告诉他这个问题程序实现的本质,而不是告诉他该使用哪个函数 2年前 回复
宿舍楼顶回复 @BoXuan : 自己有重复造几个轮子、 2年前 回复
节节草回复 @eechen : shopnc只是个商城系统的典范,它在处理大用户、高并发的能力(比如京东、淘宝双十一这种情况)还有待你举例验证,不管是php版还是java版。我没觉得javaer有优越感,只是想着有很多人用,至少自己掌握的这门技术没过时,还有用武之地,我没抨击任何其它语言,我喜欢java,但不排斥php或是其它语言 2年前 回复
节节草回复 @eechen : 我没有说过php只能做页面,我是说淘宝的中间件很多都是java实现的,php做后端页面展示,意在表述java不是毫无价值和用处的,绝对没有抨击PHP。再说一个稳定、健壮、高并发、大用户量的产品很多都不是一门语言能做好的,就如淘宝,我所了解的它就用了php、scale、java等 2年前 回复

引用来自“BoXuan”的评论

/**
     * 获取某年某月的天数
     *
     * @param year 年
     * @param month 月
     * @return 总天数
     */
    public final static int countDays(int year, int month) {
        int count = -1;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                count = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                count = 30;
                break;
            case 2:
                if (year % 4 == 0) {
                    count = 29;
                } else {
                    count = 28;
                }
                if ((year % 100 == 0) & (year % 400 != 0)) {
                    count = 28;
                }
        }
        return count;
    }
LocalDateTime ldt = LocalDateTime.now();
        int daysOfMonth = countDays(ldt.getYear(), ldt.getMonthValue());

获取一月的总天数后就好办了吧



public static int getDaysByYearMonth(int year, int month) {  
          
        Calendar a = Calendar.getInstance();  
        a.set(Calendar.YEAR, year);  
        a.set(Calendar.MONTH, month - 1);  
        a.set(Calendar.DATE, 1);  
        a.roll(Calendar.DATE, -1);  
        int maxDate = a.get(Calendar.DATE);  
        return maxDate;  
    }  



  1.     
--- 共有 2 条评论 ---
节节草回复 @BoXuan : 还有计算一年总共多少天:ld.lengthOfYear() 2年前 回复
节节草其实jdk8最新日期时间API更简单 LocalDate ld = LocalDate.of(year, month, 1); int days = ld.lengthOfMonth(); 2年前 回复

引用来自“指尖的舞者”的评论

引用来自“BoXuan”的评论

/**
     * 获取某年某月的天数
     *
     * @param year 年
     * @param month 月
     * @return 总天数
     */
    public final static int countDays(int year, int month) {
        int count = -1;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                count = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                count = 30;
                break;
            case 2:
                if (year % 4 == 0) {
                    count = 29;
                } else {
                    count = 28;
                }
                if ((year % 100 == 0) & (year % 400 != 0)) {
                    count = 28;
                }
        }
        return count;
    }
LocalDateTime ldt = LocalDateTime.now();
        int daysOfMonth = countDays(ldt.getYear(), ldt.getMonthValue());

获取一月的总天数后就好办了吧



public static int getDaysByYearMonth(int year, int month) {  
          
        Calendar a = Calendar.getInstance();  
        a.set(Calendar.YEAR, year);  
        a.set(Calendar.MONTH, month - 1);  
        a.set(Calendar.DATE, 1);  
        a.roll(Calendar.DATE, -1);  
        int maxDate = a.get(Calendar.DATE);  
        return maxDate;  
    }  



  1.     
嗯,不过jdk8最新时间日期源码里是下面这么写的:
int dom = 31;
            switch (month) {
                case 2:
                    dom = (IsoChronology.INSTANCE.isLeapYear(year) ? 29 : 28);
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    dom = 30;
                    break;
            }
完全用基本数据类型计算我想应该更有优势



顶部