日期周转换具体时间

本文介绍了如何在Java中进行日期周转换,包括获取指定周的第一天和最后一天的方法,以及解决周一位数不带0的问题。提供的代码示例详细展示了使用Calendar和SimpleDateFormat类进行日期操作的过程。
摘要由CSDN通过智能技术生成

系列文章目录

记录一下 日期周转换具体时间的使用


一、使用步骤

1.获取指定周的第一天

代码如下(示例):

private final static SimpleDateFormat FT = new SimpleDateFormat("yyyy-MM-dd");
	/**
     * 获取指定周的第一天
     *
     * @param year 年份
     * @param week 年的第几周
     * @return 返回周的第一天
     */
    public static String getFirstDayOfWeek(int year, int week) {
        if (week > 1) {
            Calendar cal = Calendar.getInstance();
            cal.setFirstDayOfWeek(Calendar.MONDAY);
            cal.setMinimalDaysInFirstWeek(1);
            cal.setWeekDate(year, week, Calendar.MONDAY);
            return FT.format(cal.getTime());
        } else {
            Calendar cal = Calendar.getInstance();
            cal.set(year, 0, 1);
            return FT.format(cal.getTime());
        }
    }

2.获取指定周的最后一天

代码如下(示例):

	/**
     * 获取指定周的最后一天
     *
     * @param year   年份
     * @param week   年的第几周
     * @param format 返回格式
     * @return 返回周的最后一天
     */
    public static String getLastDayOfWeek(int year, int week, String format) {
        // 说明是年的最后一天
        if (week * 7 >= 365) {
            Calendar cal = Calendar.getInstance();
            cal.set(year, 11, 31);
            if (StringUtils.isNotBlank(format)) {
                return new SimpleDateFormat(format).format(cal.getTime());
            }
            return FT.format(cal.getTime());
        } else {
            Calendar cal = Calendar.getInstance();
            // 设置年份
            cal.set(Calendar.YEAR, year);
            // 设置周
            cal.set(Calendar.WEEK_OF_YEAR, week);
            // 设置该周第一天为星期一
            cal.setFirstDayOfWeek(Calendar.MONDAY);
            // 设置最后一天是星期日
            cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6);
            if (StringUtils.isNotBlank(format)) {
                return new SimpleDateFormat(format).format(cal.getTime());
            }
            return FT.format(cal.getTime());
        }
    }

3.解决周 一位数前面不带 0 问题

代码如下(示例):

	/**
     * 解决周 一位数前面不带 0 问题
     *
     * @param time 格式:2023-2
     * @return
     */
    public static String makeUpZero(String time) {
        String[] split = time.split("-");
        if (split.length == 2) {
            if (split[1].length() == 1) {
                split[1] = "0" + split[1];
                return split[0] + "-" + split[1];
            }
        }
        return time;
    }

总结

以上就是今天要记录的内容,整理好的可以测试使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值