java获取某年、某季度、某月份、某周时间跨度

输入某年,得到某年的第一天和最后一天

输入某年某季度,得到某年某季度的第一天和最后一天

......

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    public static void main(String[] args) {
        // 周
        String weekStart = getWeekString(2023, 1, true);
        String weekEnd = getWeekString(2023, 1, false);
        System.out.println(weekStart);
        System.out.println(weekEnd);
        // 月
        String monthStart = getMonthString(2023, 2, true);
        String monthEnd = getMonthString(2023, 2, false);
        System.out.println(monthStart);
        System.out.println(monthEnd);
        // 季度
        String quarterStart = getQuarterString(2023, 2, true);
        String quarterEnd = getQuarterString(2023, 2, false);
        System.out.println(quarterStart);
        System.out.println(quarterEnd);
        // 年
        String yearStart = getYearString(2023, true);
        String yearEnd = getYearString(2023, false);
        System.out.println(yearStart);
        System.out.println(yearEnd);
    }

    /**
     * 获取某年某季度的时间跨度
     * @param year 年份
     * @param quarter 季度
     * @param isStartTime 是否是开始时间
     * @return String
     */
    public static String getQuarterString(int year, int quarter, boolean isStartTime) {
        int startMonth = (quarter - 1) * 3;
        // 根据月获取开始时间
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, startMonth);
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        Date start = calendar.getTime();
        int lastMonth = quarter * 3 - 1;
        calendar.set(Calendar.MONTH, lastMonth);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date end = calendar.getTime();
        String startTime = new SimpleDateFormat("yyyy-MM-dd 00:00:00").format(start);
        String endTime = new SimpleDateFormat("yyyy-MM-dd 23:59:59").format(end);
        if (isStartTime) {
            return startTime;
        } else {
            return endTime;
        }
    }

    /**
     * 获取某年的时间跨度
     * @param year 年份
     * @param isStartTime 是否是开始时间
     * @return String
     */
    public static String getYearString(int year, boolean isStartTime){
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date start = calendar.getTime();
        calendar.roll(Calendar.DAY_OF_YEAR, - 1 );
        Date end = calendar.getTime();
        String startTime = new SimpleDateFormat("yyyy-MM-dd 00:00:00").format(start);
        String endTime = new SimpleDateFormat("yyyy-MM-dd 23:59:59").format(end);
        if (isStartTime) {
            return startTime;
        } else {
            return endTime;
        }
    }

    /**
     * 获取某年某月的时间跨度
     *
     * @param year 年份
     * @param month 月份
     * @param isStartTime 是否是开始时间
     * @return String
     */
    // 获取指定年指定月的开始天数和结束天数
    public static String getMonthString(int year, int month, boolean isStartTime) {
        // 获取当前分区的日历信息(这里可以使用参数指定时区)
        Calendar calendar = Calendar.getInstance();
        // 设置年
        calendar.set(Calendar.YEAR, year);
        // 设置月,月份从0开始
        calendar.set(Calendar.MONTH, month - 1);
        // 设置为指定月的第一天
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        // 获取指定月第一天的时间
        Date start = calendar.getTime();
        // 设置日历天数为当前月实际天数的最大值,即指定月份的最后一天
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
        // 获取最后一天的时间
        Date end = calendar.getTime();
        // 设置返回信息,返回样式根据需求自行格式化
        String startTime = new SimpleDateFormat("yyyy-MM-dd 00:00:00").format(start);
        String endTime = new SimpleDateFormat("yyyy-MM-dd 23:59:59").format(end);
        if (isStartTime) {
            return startTime;
        } else {
            return endTime;
        }
    }

    /**
     * 获取某年某周的时间跨度
     *
     * @param year 年份
     * @param week 周数
     * @param isStartTime 是否是开始时间
     * @return String
     */
    public static String getWeekString(int year, int week, boolean isStartTime) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        // 设置星期一为一周开始的第一天
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        // 可以不用设置
        calendar.setMinimalDaysInFirstWeek(4);
        // 获得当前的年
        int weekYear = calendar.get(Calendar.YEAR);
        // 获得指定年的第几周的开始日期(星期几)
        calendar.setWeekDate(weekYear, week, Calendar.MONDAY);
        Date start = calendar.getTime();
        // 获得指定年的第几周的结束日期(星期几)
        calendar.setWeekDate(weekYear, week, Calendar.SUNDAY);
        Date end = calendar.getTime();
        String startTime = new SimpleDateFormat("yyyy-MM-dd 00:00:00").format(start);
        String endTime = new SimpleDateFormat("yyyy-MM-dd 23:59:59").format(end);
        if (isStartTime) {
            return startTime;
        } else {
            return endTime;
        }
    }
}

测试结果:

// 周

2023-01-02 00:00:00
2023-01-08 23:59:59

// 月

2023-02-01 00:00:00
2023-02-28 23:59:59

// 季度
2023-04-01 00:00:00
2023-06-30 23:59:59

// 年
2023-01-01 00:00:00
2023-12-31 23:59:59

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
企业进销存管理系统程序使用说明 主要功能 中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量众多,地区分布广泛,行业分布跨度大。随着全球经济一体化的发展和电子商务的兴起,中小企业之间的竞争将越来越激烈。网络管理的迅猛发展突破了时间、空间的局限性,给中小企业带来了更多的发展机会,同时也增大了企业之间的竞争强度。这就要求中小企业必须改变企业的经营管理模式,提高企业的运营效率。 通过调查,要求系统具有以下功能:  考虑到部分操作人员的计算机知识不足,要求有良好的人机交互界面。  由于该系统主要针对公司内部人员,不要求严格的权限管理,但是必须有用户登录,以区分当前操作员。  方便的数据查询,支持多条件查询。  基础信息管理与查询(包括商品信息、客户信息和供应商信息)。  通过计算机能够直接“透视”仓库存储情况。  完善的商品采购信息、商品销售信息管理。  当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。  数据计算自动完成,尽量减少人工干预。 注意事项 (1)本系统初始用户名和密码为“mr”、“mrsoft”。 操作步骤 要想使用本系统,请按照以下流程操作: (1)首先通过“系统设置”/“添加操作员”菜单项,添加操作员。 (2)通过“基础信息”菜单中的菜单项,添加客户信息、商品信息及供应商信息。 (3)通过“采购管理”/“商品采购”菜单项,采购商品。 (4)通过“库存管理”/“商品入库”菜单项,添加商品入库信息。 (5)通过“商品销售”/“商品销售”菜单项,添加商品销售信息。 注意:本系统还提供了数据查询模块,用户可以对不同的操作进行查询。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值