DateUtil工具类,解决时间格式问题
工具 解决 时间 格式 问题
2023-09-11 14:16:29 时间
DateUtil工具类:
解决常见的日期格式转换问题
/** 日期格式转换*/
public static final String format = "yyyy-MM-dd HH:mm:ss";
/** 时间格式(yyyy-MM-dd) */
public final static String DATE_PATTERN = "yyyy-MM-dd";
/** 时间格式(yyyy-MM-dd HH:mm:ss) */
public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/** 时间格式(yyyy-MM-dd HH:mm:ss.SSS) */
public final static String TIME_PATTERN_ALL = "yyyy-MM-dd HH:mm:ss.SSS ";
/**转换数字格式*/
public final static String NUMBER_PATTERN_ALL = "yyyyMMddHHmmssSSS";
/**
* 日期格式转换为字符串
*
* @param date 日期
* @param form 格式
* @return java.lang.String
**/
public static String parseDate(Date date, String form) {
if (date == null) {
return "";
}
SimpleDateFormat formater = new SimpleDateFormat(form);
return formater.format(date);
}
/**
* 格式日期转换日期
*
* @param dateStr 字符串
* @param form 转换格式
* @return java.util.Date
**/
public static Date parseDate(String dateStr, String form) {
try {
if (StringUtils.isBlank(dateStr)) {
return null;
}
SimpleDateFormat dateFormat = new SimpleDateFormat(form);//可以方便地修改日期格式
Date date = dateFormat.parse(dateStr);
return date;
} catch (ParseException e) {
e.printStackTrace();
throw ResultException.create(e.getMessage());
}
}
/**
* 当前日期date 减去几分钟得到的日期
*
* @param date 日期
* @param minute minute
* @return java.util.Date
**/
public static Date subMinute(Date date, Integer minute) {
Date before = new Date(date.getTime() - minute * 60000);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, -minute * 1);
Date b = cal.getTime();
return before;
}
/**
* 当前日期date 加上几天得到的日期
*
* @param date date
* @param minute minute
* @return java.util.Date
**/
public static Date plusMinute(Date date, Integer minute) {
Date after = new Date(date.getTime() + minute * 60000);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, minute * 1);
Date b = cal.getTime();
return after;
}
/**
* 当前日期date 减去几天得到的日期
*
* @param date date
* @param value value
* @return java.util.Date
**/
public static Date subDate(Date date, Integer value) {
Calendar ca = Calendar.getInstance();
ca.setTime(date);
ca.add(Calendar.DATE, -1 * value);
return ca.getTime();
}
/**
* 计算时间之间差
*
* @param end end
* @param start start
* @return long
**/
public static long getDateBetweenTime(Date end, Date start) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
long startTime = calendar.getTimeInMillis();
calendar.setTime(end);
long endtime = calendar.getTimeInMillis();
return endtime - startTime;
}
/**
* 日期时间 前几小时
*
* @param date date
* @param hour hour
* @return java.util.Date
**/
public static Date subHour(Date date, Integer hour) {
Date before = new Date(date.getTime() - hour * 60000 * 60);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, -hour * 60);
Date b = cal.getTime();
return before;
}
/**
* 日期比较
*
* @param date date
* @param date1 date1
* @return int
**/
public static int compareDate(Date date, Date date1) {
return date.compareTo(date1);
}
/**
* 检查日期类型
*
* @param date date
* @param pattern pattern
* @return boolean
**/
public static boolean checkDateType(String date, String pattern) {
try {
if (StringUtils.isEmpty(date)) {
return true;
}
//可以方便地修改日期格式
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(pattern);
LocalDateTime.parse(date, dateFormat);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区
*
* @param date date
* @return java.time.LocalDateTime
**/
public static LocalDateTime dateConvertToLocalDateTime(Date date) {
return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
}
/**
* 将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区
*
* @param localDateTime localDateTime
* @return java.util.Date
**/
public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
}
/**
* 获取data的时间戳
*
* @param date date
* @return java.lang.Long
**/
public static Long getLocalDateTimeMillSeconds(LocalDateTime date) {
return date.toInstant(ZoneOffset.of("+8")).toEpochMilli();
}
/**
* localDateTime 转换
*
* @param localDateTime localDateTime
* @param pattern pattern
* @return java.lang.String
**/
public static String localDateForm(LocalDateTime localDateTime, String pattern) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
String dateTime = localDateTime.format(formatter);
return dateTime;
}
/**
* 当前时间秒数
*
* @param date date
* @return java.lang.Long
**/
public static Long getLocalDateTimeSeconds(LocalDateTime date) {
return date.toEpochSecond(ZoneOffset.of("+8"));
}
/**
* 当前时间的后几分钟
*
* @param date date
* @param minute minute
* @return java.time.LocalDateTime
**/
public static LocalDateTime plusMinute(LocalDateTime date, Integer minute) {
return date.plusMinutes(minute);
}
/**
* 当前时间的前几分钟
*
* @param date date
* @param minute minute
* @return java.time.LocalDateTime
**/
public static LocalDateTime minusMinute(LocalDateTime date, Integer minute) {
return date.minusSeconds(minute);
}
/**
* 得到年份
*
* @param date int
* @return int
*/
public static int getYear(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
return year;
}
/**
* 得到月份
*
* @param date 日期
* @return int
*/
public static int getMonth(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH) + 1;
return month;
}
/**
* 得到当天是这一年的那一天
*
* @param date 日期
* @return int
*/
public static int getDate(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int date2 = calendar.get(Calendar.DAY_OF_YEAR);
return date2;
}
相关文章
- 文本标注工具Brat的安装及使用
- 工作总结 for 另类写法 循环加时间 集合合并 也是用的 static class Enumerable (IEnumerable<T>的扩展方法) (IEnumerable<T> 的 工具类) (所有集合 数组都实现IEnumerable<T>)
- 数仓工具—Hive进阶之MSCK(14)
- 55Linux - 远程连接工具(SSHSecureShellClient乱码问题解决)
- 碰到运维难题怎么快速解决?有工具推荐吗?
- 【最佳实践】如何让用户使用某个工具访问某个应用时,也能具备远程协助、云端录像、全程审计等堡垒机特性?
- 有了这款工具,自动化识别验证码再也不是问题
- 工具--国内最常用开源镜像站大汇总,解决你下载软件慢的问题
- 实现一个接口模拟工具,并解决一个 websocket 相关问题
- 【性能测试】Jmeter工具使用3
- JAVA企业级开发审计工具——myeclipse安装
- 使用autogen工具生成Makefile遇到问题解决思路
- 各种代码版本控制工具下使用http代理的方法
- Filebeat 日志采集工具安装
- MySQL基础之---mysqlimport工具和LOAD DATA命令导入文本文件
- 浅析模块化的演进发展历史、模块化标准规范的建立历史及深入理解模块打包工具webpack究竟解决什么问题
- Vue3实践指南:Prettier代码格式化工具、格式化Vue出现单引号变双引号及分号问题、useRouter执行后undefined问题、Property 'value' does not exist on type 'HTMLElement'、error Unexpected mutation of “xxxx“ prop
- 巧用工具洞察用户行为
- 在智慧城市建设中 计算机模拟是一个强大的工具
- 采用泳道图工具跟踪项目进度或者问题解决进度