package util;import com.utils.DateUtils;import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;/*** 日期操作工具*/
public class DateUtil {public static final String C_DATE_DIVISION = "-";public static final String C_TIME_PATTON_DEFAULT = "yyyy-MM-dd HH:mm:ss";public static final String C_TIME_PATTON_NO_SECOND = "yyyy-MM-dd HH:mm";public static final String C_DATE_PATTON_DEFAULT = "yyyy-MM-dd";public static final String C_DATA_PATTON_YYYYMMDD = "yyyyMMdd";public static final String C_TIME_PATTON_HHMMSS = "HH:mm:ss";public static final int C_ONE_SECOND = 1000;public static final int C_ONE_MINUTE = 60 * C_ONE_SECOND;public static final int C_ONE_HOUR = 60 * C_ONE_MINUTE;public static final long C_ONE_DAY = 24 * C_ONE_HOUR;/*** Return the current date** @return - DATE<br>*/public static Date getCurrentDate() {Calendar cal = Calendar.getInstance();Date currDate = cal.getTime();return currDate;}/*** Return the current date string** @return - 产生的日期字符串<br>*/public static String getCurrentDateStr() {Calendar cal = Calendar.getInstance();Date currDate = cal.getTime();return format(currDate);}/*** 获取当前月份的上个月*/public static String getLastMonth() {LocalDate today = LocalDate.now();today = today.minusMonths(1);DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM");return formatters.format(today);}/*** Return the current datetime string** @return - 产生的日期字符串<br>*/public static String getCurrentDateTimeStr() {Calendar cal = Calendar.getInstance();Date currDate = cal.getTime();return format(currDate, C_TIME_PATTON_DEFAULT);}/*** Return the current date in the specified format** @param strFormat* @return*/public static String getCurrentDateStr(String strFormat) {Calendar cal = Calendar.getInstance();Date currDate = cal.getTime();return format(currDate, strFormat);}/*** Parse a string and return a date value** @param dateValue* @return* @throws Exception*/public static Date parseDate(String dateValue) {return parseDate(C_DATE_PATTON_DEFAULT, dateValue);}/*** Parse a strign and return a datetime value** @param dateValue* @return*/public static Date parseDateTime(String dateValue) {return parseDate(C_TIME_PATTON_DEFAULT, dateValue);}/*** Parse a string and return the date value in the specified format** @param strFormat* @param dateValue* @return* @throws ParseException* @throws Exception*/public static Date parseDate(String strFormat, String dateValue) {if (dateValue == null)return null;if (strFormat == null)strFormat = C_TIME_PATTON_DEFAULT;SimpleDateFormat dateFormat = new SimpleDateFormat(strFormat);Date newDate = null;try {newDate = dateFormat.parse(dateValue);} catch (ParseException pe) {newDate = null;}return newDate;}/*** 将Timestamp类型的日期转换为系统参数定义的格式的字符串。** @param aTs_Datetime 需要转换的日期。* @return 转换后符合给定格式的日期字符串*/public static String format(Date aTs_Datetime) {return format(aTs_Datetime, C_DATE_PATTON_DEFAULT);}/*** 将Timestamp类型的日期转换为系统参数定义的格式的字符串。** @param aTs_Datetime 需要转换的日期。* @return 转换后符合给定格式的日期字符串*/public static String formatTime(Date aTs_Datetime) {return format(aTs_Datetime, C_TIME_PATTON_DEFAULT);}/*** 将Date类型的日期转换为系统参数定义的格式的字符串。** @param aTs_Datetime* @param as_Pattern* @return*/public static String format(Date aTs_Datetime, String as_Pattern) {if (aTs_Datetime == null || as_Pattern == null)return null;SimpleDateFormat dateFromat = new SimpleDateFormat();dateFromat.applyPattern(as_Pattern);return dateFromat.format(aTs_Datetime);}/*** @param aTs_Datetime* @param as_Format* @return*/public static String formatTime(Date aTs_Datetime, String as_Format) {if (aTs_Datetime == null || as_Format == null)return null;SimpleDateFormat dateFromat = new SimpleDateFormat();dateFromat.applyPattern(as_Format);return dateFromat.format(aTs_Datetime);}/*** 将字符串按照  as_Format 的格式转化成日期** @param s_date* @param as_Format* @return*/public static Date formatToDate(String s_date, String as_Format) {SimpleDateFormat sdf = new SimpleDateFormat(as_Format);try {return sdf.parse(s_date);} catch (ParseException e) {e.printStackTrace();return null;}}public static String getFormatTime(Date dateTime) {return formatTime(dateTime, C_TIME_PATTON_HHMMSS);}/*** @param aTs_Datetime* @param as_Pattern* @return*/public static String format(Timestamp aTs_Datetime, String as_Pattern) {if (aTs_Datetime == null || as_Pattern == null)return null;SimpleDateFormat dateFromat = new SimpleDateFormat();dateFromat.applyPattern(as_Pattern);return dateFromat.format(aTs_Datetime);}/*** 取得指定日期N天后的日期** @param date* @param days* @return*/public static Date addDays(Date date, int days) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DAY_OF_MONTH, days);return cal.getTime();}/*** 取得N分钟后的时间** @param date* @param minute* @return*/public static Date addMinutes(Date date, int minute) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.MINUTE, minute);return cal.getTime();}/*** 计算两个日期之间相差的天数** @param date1* @param date2* @return*/public static int daysBetween(Date date1, Date date2) {Calendar cal = Calendar.getInstance();cal.setTime(date1);long time1 = cal.getTimeInMillis();cal.setTime(date2);long time2 = cal.getTimeInMillis();long between_days = (time2 - time1) / (1000 * 3600 * 24);return Integer.parseInt(String.valueOf(between_days));}/*** 计算当前日期相对于"1977-12-01"的天数** @param date* @return*/public static long getRelativeDays(Date date) {Date relativeDate = DateUtil.parseDate("yyyy-MM-dd", "1977-12-01");return DateUtil.daysBetween(relativeDate, date);}public static Date getDateBeforTwelveMonth() {String date = "";Calendar cla = Calendar.getInstance();cla.setTime(getCurrentDate());int year = cla.get(Calendar.YEAR) - 1;int month = cla.get(Calendar.MONTH) + 1;if (month > 9) {date = String.valueOf(year) + C_DATE_DIVISION+ String.valueOf(month) + C_DATE_DIVISION + "01";} else {date = String.valueOf(year) + C_DATE_DIVISION + "0"+ String.valueOf(month) + C_DATE_DIVISION + "01";}Date dateBefore = parseDate(date);return dateBefore;}/*** 传入时间字符串,加一天后返回Date** @param date 时间 格式 YYYY-MM-DD* @return*/public static Date addDate(String date) {if (date == null) {return null;}Date tempDate = parseDate(C_DATE_PATTON_DEFAULT, date);String year = format(tempDate, "yyyy");String month = format(tempDate, "MM");String day = format(tempDate, "dd");GregorianCalendar calendar = new GregorianCalendar(Integer.parseInt(year), Integer.parseInt(month) - 1,Integer.parseInt(day));calendar.add(GregorianCalendar.DATE, 1);return calendar.getTime();}public static Long dateDDMMSSStringToLong(String str) throws ParseException {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Calendar cal = Calendar.getInstance();cal.setTime(format.parse(str));return cal.getTimeInMillis();}/*** 前推天数*/public static Date parseDay(int day) {int INTERVAL_DAY = -day;Calendar calender = Calendar.getInstance();calender.setTime(new Date());calender.add(Calendar.DATE, INTERVAL_DAY);return calender.getTime();}public static Date getDay(Date date, int n) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.DAY_OF_MONTH, n);date = calendar.getTime();return date;}/*** 得到当天的开始时间,格式为yyyy-mm-dd HH:MM:ss, 其中时分秒都为0** @return*/public static String getCurrentDayBeginDateTimeStr() {String dateStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateStr;}/*** 得到上一天的开始时间,格式为yyyy-mm-dd HH:MM:ss, 其中时分秒都为0** @return*/public static String getPreviousDayBeginDateTimeStr() {String dateStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.DAY_OF_MONTH, -1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateStr;}public static String addDay(int n) {Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.DAY_OF_MONTH, n);return DateUtil.format(cal.getTime(), DateUtil.C_DATE_PATTON_DEFAULT);}/*** 得到当前时间下一分钟:45秒的时间,比如2014-06-26 11:03:45** @return*/public static String getNextMin45Str() {String dateStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.MINUTE, 1);cal.set(Calendar.SECOND, 0);cal.add(Calendar.SECOND, 45);dateStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateStr;}/*** 得到当前时间下一分钟:45秒的时间,比如2014-06-26 11:03:45** @return*/public static String getNextMin30Str() {String dateStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.MINUTE, 1);cal.set(Calendar.SECOND, 0);cal.add(Calendar.SECOND, 30);dateStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateStr;}/*** 得到上一个时辰的开始时间,格式为yyyy-mm-dd HH:MM:ss,** @return*/public static String getPreviousHourBeginDateTimeStr() {String dateTimeStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.HOUR_OF_DAY, -1);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateTimeStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateTimeStr;}/*** 得到下一天的开始时间,格式为yyyy-mm-dd HH:MM:ss, 其中时分秒都为0** @return*/public static String getNextDayBeginDateTimeStr() {String dateStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.DAY_OF_MONTH, 1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateStr;}/*** 得到下一个时辰的开始时间,格式为yyyy-mm-dd HH:MM:ss,** @return*/public static String getNextHourBeginDateTimeStr() {String dateTimeStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.add(Calendar.HOUR_OF_DAY, 1);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateTimeStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateTimeStr;}/*** 得到当前时辰的开始时间,格式为yyyy-mm-dd HH:MM:ss,** @return*/public static String getCurrentHourBeginDateTimeStr() {String dateTimeStr = "";Calendar cal = Calendar.getInstance();cal.setTimeInMillis(System.currentTimeMillis());cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);dateTimeStr = DateUtil.format(cal.getTime(), DateUtil.C_TIME_PATTON_DEFAULT);return dateTimeStr;}public static long getSecondsNextEarlyMorning() {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DAY_OF_YEAR, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);return (calendar.getTimeInMillis() - System.currentTimeMillis()) / 1000;}/*** 获取精确到秒的时间戳** @param date* @return*/public static String getSecondTimestampTwo(Date date) {if (null == date) {return "0";}String timestamp = String.valueOf(date.getTime() / 1000);return timestamp;}/*** 计算当前时间距离n天后的秒数** @param n* @return* @throws ParseException*/public static long times(int n) {long now = System.currentTimeMillis();SimpleDateFormat sdfOne = new SimpleDateFormat(C_DATE_PATTON_DEFAULT);try {long overTime = (now - (sdfOne.parse(sdfOne.format(now)).getTime())) / 1000;//当前时间  距离当天晚上23:59:59  秒数 也就是今天还剩多少秒long TimeNext = n * 24 * 60 * 60 - overTime;return TimeNext;} catch (ParseException e) {e.printStackTrace();}return 0l;}/*** 计算两个日期的天数*/public static int getBetweenDays(LocalDate localDate1, LocalDate localDate2) {//       Period next = Period.between(localDate1, localDate2);return (int) (localDate2.toEpochDay() - localDate1.toEpochDay());}/*** 两个日期直接的dataStr*/public static List<String> getBetweenDateStr(String dateStart, String dateEnd) {List<String> lable = new ArrayList<>();while (!Objects.equals(dateEnd, dateStart)) {lable.add(dateEnd);dateEnd = DateUtils.getLastDate(dateEnd, -1);}lable.add(dateStart);Collections.reverse(lable);return lable;}public static String getMonthFirstDay() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//获取当前月第一天:Calendar c = Calendar.getInstance();c.add(Calendar.MONTH, -1);//设置为1号,当前日期既为本月第一天c.set(Calendar.DAY_OF_MONTH, 1);return format.format(c.getTime());}public static String getMonthLastDay() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//获取当前月最后一天Calendar ca = Calendar.getInstance();ca.add(Calendar.MONTH, -1);ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));return format.format(ca.getTime());}
}

日期操作工具2:DateUtil相关推荐

  1. dateutil 日期计算_日期时间 - 日期时间工具-DateUtil - 《Hutool 参考文档》 - 书栈网 · BookStack...

    日期时间工具-DateUtil 由来 考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装.这其中的封装主要是日期和字符串 ...

  2. 通用模块系列--日期操作工具类

    package com.zengjx.health.utils;import org.apache.ibatis.annotations.Insert; import org.junit.Test;i ...

  3. java日期工具类DateUtil

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...

  4. 日期工具类---DateUtil

    2019独角兽企业重金招聘Python工程师标准>>> public class DateUtil {/*** 每分钟秒数*/public static final int MINU ...

  5. Hutool - 日期时间工具 - DateUtil

    文章目录 获取当前时间 字符串转日期 格式化输出 开始和结束时间 日期时间偏移 获取当前时间 //输出 2022-05-24 23:09:51Date date = DateUtil.date();/ ...

  6. java 日期操作工具类_java8操作日期的工具类

    java8操作日期的工具类 一.方法概览 该包的API提供了大量相关的方法,这些方法一般有一致的方法前缀: of:静态工厂方法. parse:静态工厂方法,关注于解析. get:获取某些东西的值. i ...

  7. Android基础常用日期操作工具类

    将指定日期格式转换为毫秒(一) public class DataUtil {/*** "2015-01-01" 将指定的日期格式转换为毫秒* @param time* @retu ...

  8. Java日期操作工具类

    /*** 格式化日期显示格式** @param sdate* 原始日期格式 s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象* @param format* ...

  9. Python日期时间处理库dateutil

    文章目录 简介 安装 初试 日期比较 相对时间 解析日期时间 更多例子 参考文献 简介 dateutil 为 Python 标准库 datetime 提供了强大的扩展 功能: 相对时间,如下周一.下个 ...

  10. dateutil 日期计算_时间工具类DateUtil的使用

    ###前言 在Android开发过程中,我们经常会用到时间相关方法.这里我封装一个时间工具类`DateUtil`,以方便使用. 今天涉及内容: 1. DateUtil在MainActivity中的使用 ...

最新文章

  1. React Native 网络层分析
  2. desc mysql 连表查询_Mysql连表查询
  3. 03 在百度地图上定位到指定位置
  4. 【转】UNITY之LUA加密
  5. 数据库修改后Hibernate的配置更新
  6. Linux进程全解2——进程环境(环境变量、进程运行的虚拟地址空间)
  7. C#读取EXIF信息类
  8. 读《大道至简—是懒人造就了方法 》有感
  9. 小米Civi 1S获美女产品经理确认:依旧是最美小米机型
  10. 水松纸缺陷在线检测系统
  11. 百练(九~十二)题解
  12. mybatis-generator 根据表生成对应文件
  13. LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]
  14. ttc、otf、ttf文件制作以及相关数据增强(OCR)
  15. pgAdmin4 CentOS7部署
  16. 华氏摄氏转换 java_java 摄氏度 华氏度 转换
  17. 1194. 锦标赛优胜者
  18. Unity内置Shader解读2——Bumped Specular
  19. css3复习知识点概括1(根据W3S顺序)
  20. Unity发布VR项目不能唤起VR头盔

热门文章

  1. 什么是MIME类型?
  2. codeblocks17.12安装及汉化
  3. Guice集成Properties配置
  4. Guice依赖注入(Scope)
  5. 新书推荐:JavaScript征途
  6. c语言考试题库大一下学期基础,c语言考试题(全国c语言二级考试题库)
  7. 品管(QC)七大手法
  8. 计算机汇编语言调试报告心得,汇编语言实习心得
  9. 数据分析-信用卡反欺诈模型
  10. wps表格宏被禁用如何解禁_宏被禁用怎么办?excel/word宏已被禁用解决方法