首页 > 其他分享 >日期工具类Calendar

日期工具类Calendar

时间:2023-09-28 14:33:31浏览次数:26  
标签:set 工具 Date 日期 cal date Calendar calendar

package util;

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

public class DateUtil3 {

    public static final String YYYYMMDD = "yyyyMMdd";
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
    public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    /**
     * 将指定格式的字符串化为时间格式.
     *
     * @param dateStr 时间字符串
     * @param pattern 指定格式
     * @return 转换后的时间
     */
    public static Date strToDate(String dateStr, String pattern) {
        final SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
        try {
            final Date datetime = dateFormat.parse(dateStr);
            final Calendar cal = Calendar.getInstance();
            cal.setTime(datetime);
            return cal.getTime();
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将时间格式化为指定格式的字符串.
     *
     * @param date    指定时间
     * @param pattern 时间格式
     * @return 转换后的时间字符串
     */
    public static String dateToStr(Date date, String pattern) {
        final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }

    /**
     * 获取今天 0点时间
     */
    public static Date getTodayZero() {
        Calendar calendar = Calendar.getInstance();
        // 获取 0 点的时间
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取今天 23:59:59点时间
     */
    public static Date getTodayLast() {
        Calendar calendar = Calendar.getInstance();
        // 获取 23:59:59 点的时间
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    /**
     * 加指定的月.
     *
     * @param date  时间
     * @param month 需要计算增加的月
     * @return 计算后的日期
     */
    public static Date addMonth(Date date, int month) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MONTH, month);
        return cal.getTime();
    }

    /**
     * 加指定的周.
     *
     * @param date 时间
     * @param week 需要计算增加的周.
     * @return 计算后的日期
     */
    public static Date addWeek(Date date, int week) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.WEEK_OF_YEAR, week);
        return cal.getTime();
    }

    /**
     * 加指定的天数.
     *
     * @param date 时间
     * @param day  需要增加的天数
     * @return 计算后的日期
     */
    public static Date addDay(Date date, int day) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DATE, day);
        return cal.getTime();
    }

    /**
     * 加指定的小时.
     *
     * @param date 时间
     * @param hour 需要增加的小时
     * @return 计算后的日期
     */
    public static Date addHour(Date date, int hour) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.HOUR, hour);
        return cal.getTime();
    }

    /**
     * 加指定的分钟.
     *
     * @param date   时间
     * @param minute 需要增加的分钟
     * @return 计算后的日期
     */
    public static Date addMinute(Date date, int minute) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MINUTE, minute);
        return cal.getTime();
    }

    /**
     * 加指定的秒
     *
     * @param date   时间
     * @param second 需要增加的秒
     * @return 计算后的日期
     */
    public static Date addSecond(Date date, int second) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.SECOND, second);
        return cal.getTime();
    }

    /**
     * 获取周一 00:00:00:000
     */
    public static Date weekMonday(Date date) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY); // 以周一为首日
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 周一
        // 获取 0 点的时间
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取周日
     */
    public static Date weekSunday(Date date) {
        Calendar calendar = Calendar.getInstance(Locale.CHINA);
        calendar.setFirstDayOfWeek(Calendar.MONDAY); // 以周一为首日
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 周日

        // 获取 最后一秒 的时间
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    /**
     * 月份第一天 00:00:00
     */
    public static Date monthFirstDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, 1); // 设置为每月的第一天
        // 获取 0 点的时间
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 月份最后一天
     */
    public static Date monthLastDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
        // 获取 最后一秒 的时间
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }


    /**
     * 获取一周中的周几
     * 1:周日 、2:周一 、 3:周二 、 4:周三 、5:周四、6:周五、 7:周六
     */
    public static int dayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_WEEK);
    }

    /**
     * 获取年的第几周
     * 周的第一天从周日开始
     */
    public static int weekOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.WEEK_OF_YEAR);
    }
}


标签:set,工具,Date,日期,cal,date,Calendar,calendar
From: https://www.cnblogs.com/lovedaodao/p/17735744.html

相关文章

  • 直播平台开发,纯时间比较(时分),不含日期,js前端比较
    直播平台开发,纯时间比较(时分),不含日期,js前端比较//ajax请求后返回的数据success:function(data){for(vari=0;i<data.length;i++){varrows=data[i];varrowTimeBegin=(parseInt(((rows.timeBegin).split(":"))[0]))*60*60+(parseInt(((rows.timeBegin).split(":"......
  • 敏捷开发和传统开发有什么区别?以及Scrum管理工具的推荐
    ​敏捷开发和传统开发的区别主要体现在以下几个方面:团队建设不同:敏捷开发以团队为单位,强调团队建设,赋予高度的责任,支持开发、透明的交流环境;传统开发以个人为单位,团队成员之间交付很少。管理流程不同:敏捷开发流程可以简单,但规划与执行必须严谨;传统开发流程复杂,繁琐,静态,变更成本......
  • HTML Tidy 将HTML转换为XHTML的开源工具
    基本信息软件名称:HTMLTidy开发者主页:tidy.sourceforge.net软件大小:112K安装环境:有多平台版本,本站提供MicrosoftWindows95/98/Me/2000/xp平台版本版本:2005年8月由W3C香港分部提供此版本增加了对gb2312编码的支持软件说明我们现在的网站大部分都是HTML的,如果希望将它们标......
  • 2023好用的7款数据库连接工具推荐!非常详细的介绍说明2000字左右
    在2023年,有许多好用的数据库连接工具可供选择。这些工具提供了方便、高效地连接和管理数据库的功能,为开发者和数据分析师提供了更好的工作体验。以下是我推荐的7款数据库连接工具,并对它们进行详细介绍说明:1.DBeaver:  -DBeaver是一款免费且功能强大的数据库连接工具,支持......
  • 一个比 ping 更强大、更牛逼的命令行工具
    晚上好,我的网工朋友。遇到网络故障的时候,你一般会最先使用哪条命令进行排障?基本上大家第一个想到的都是Ping吧。但除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等好用命令,你都用过吗?今天给你安排一个Traceroute的命令详解,不仅有原理解读,还有命令格式和使用说明,最后......
  • 一个比 ping 更强大、更牛逼的命令行工具
    晚上好,我的网工朋友。遇到网络故障的时候,你一般会最先使用哪条命令进行排障?基本上大家第一个想到的都是Ping吧。但除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等好用命令,你都用过吗?今天给你安排一个Traceroute的命令详解,不仅有原理解读,还有命令格式和使用说明,最后还......
  • 模块化打包工具-初识Webpack
    1.为什么需要模块化打包工具在上一篇文章中提到的ESModule可以帮助开发者更好地组织代码,完成js文件的模块化,基本解决了模块化的问题,但是实际开发中仅仅完成js文件的模块化是不够的,尤其是面对一个较为庞大的工程项目的时候,主要仍有以下几个问题需要解决:ESModule是ES6新语法,一......
  • llvm-mca 性能分析工具
     llvm-mca-LLVMMachineCodeAnalyzer—LLVM18.0.0gitdocumentationllvm-mca isaperformanceanalysistoolthatusesinformationavailableinLLVM(e.g.schedulingmodels)tostaticallymeasuretheperformanceofmachinecodeinaspecificCPU.Perfor......
  • 每一个C++开发者都应该知道的线上工具
      每一个C++开发者都应该知道的线上工具-知乎(zhihu.com) 要想代码写得丝滑,怎么可以不熟练各种开发工具呢?锤子用的好,烦恼会减少。这里推荐几个C++开发中用于编译、构建、调试和性能分析的线上工具,最初的资料来源于LightningTalk:OnlineToolsEveryC++DevelopersSh......
  • 使用idea自带的反编译工具 [FernFlower]
    终端直接输入命令java-cp参数1org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler-dgs=true参数2参数3参数说明:参数1。IDEA安装目录下的反编译插件“java-decompiler.jar”所在路径,需要加上双引号。示例:"E:\IntelliJIDEA2020.2.2\plugins\java-decomp......