hyperprice 2012-06-11 11:32
浏览 722
已采纳

java取当前周期、月初至月末、季度初至季度末日期。

需求1: 当前登陆日期的周一至周五的日期 比如 现在是2012-06-11 周一是2012-06-11 周五就是 2012-06-15。

需求2: 月初至月末。 同上。 当前登陆的时间算出月初和月末的时间。

需求3: 季度初和季度末。 同上。 当前登陆时间算出季度的第一天和季度末的最后一天。

求函数。 谢谢。。 整了1天多没整出来。。。 时间不够了就上来发个需求。。

  • 写回答

5条回答 默认 最新

  • 晓星 2012-06-11 14:04
    关注

    我给你写了个,参考一下嘛:
    [code="java"]
    Calendar calendar = new GregorianCalendar();
    // 1. 当前登陆日期的周一至周五的日期 比如 现在是2012-06-11 周一是2012-06-11 周五就是 2012-06-15。
    calendar.set(Calendar.DAY_OF_WEEK, 2);
    System.out.println("登录日期的周一:" + print(calendar.getTime()));
    // 2.星期五,第六天s
    calendar.set(Calendar.DAY_OF_WEEK, 6);
    System.out.println("登录日期的周五:" + print(calendar.getTime()));
    // 3.当前月的第一天
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    System.out.println("当前月的第一天:" + print(calendar.getTime()));
    // 4.当前月的最后一天
    calendar.add(Calendar.MONTH, 1);
    calendar.set(Calendar.DAY_OF_MONTH, 0);
    System.out.println("当前月的最后一天:" + print(calendar.getTime()));

        // 季度初
        calendar.setTime(new Date());
        int month = getQuarterInMonth(calendar.get(Calendar.MONTH), true);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        System.out.println("当季度的第一天:" + print(calendar.getTime()));
        // 季度末
        calendar.setTime(new Date());
        month = getQuarterInMonth(calendar.get(Calendar.MONTH), false);
        calendar.set(Calendar.MONTH, month + 1);
        calendar.set(Calendar.DAY_OF_MONTH, 0);
        System.out.println("当前时间的季度末:" + print(calendar.getTime()));
    }
    
    private static String print(Date d) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return df.format(d);
    }
    
    // 返回第几个月份,不是几月
    // 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月
    private static int getQuarterInMonth(int month, boolean isQuarterStart) {
        int months[] = { 1, 4, 7, 10 };
        if (!isQuarterStart) {
            months = new int[] { 3, 6, 9, 12 };
        }
        if (month >= 2 && month <= 4)
            return months[0];
        else if (month >= 5 && month <= 7)
            return months[1];
        else if (month >= 8 && month <= 10)
            return months[2];
        else
            return months[3];
    }[/code]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?