jdk8 时间日期工具类(转)
- package com.changfu.common.util;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.sql.Timestamp;
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- import java.time.format.DateTimeParseException;
- import java.time.temporal.ChronoUnit;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- /**
- * 时间计算工具类
- */
- public class DateUtil {
- /**
- * the milli second of a day
- */
- public static final long DAYMILLI = 24 * 60 * 60 * 1000;
- /**
- * the milli seconds of an hour
- */
- public static final long HOURMILLI = 60 * 60 * 1000;
- /**
- * the milli seconds of a minute
- */
- public static final long MINUTEMILLI = 60 * 1000;
- /**
- * the milli seconds of a second
- */
- public static final long SECONDMILLI = 1000;
- /**
- * added time
- */
- public static final String TIMETO = " 23:59:59";
- /**
- * flag before
- */
- public static final transient int BEFORE = 1;
- /**
- * flag after
- */
- public static final transient int AFTER = 2;
- /**
- * flag equal
- */
- public static final transient int EQUAL = 3;
- /**
- * date format dd/MMM/yyyy:HH:mm:ss +0900
- */
- public static final String TIME_PATTERN_LONG = "dd/MMM/yyyy:HH:mm:ss +0900";
- /**
- * date format dd/MM/yyyy:HH:mm:ss +0900
- */
- public static final String TIME_PATTERN_LONG2 = "dd/MM/yyyy:HH:mm:ss +0900";
- /**
- * date format YYYY-MM-DD HH24:MI:SS
- */
- public static final String DB_TIME_PATTERN = "YYYY-MM-DD HH24:MI:SS";
- /**
- * date format YYYYMMDDHH24MISS
- */
- public static final String DB_TIME_PATTERN_1 = "YYYYMMDDHH24MISS";
- /**
- * date format dd/MM/yy HH:mm:ss
- */
- public static final String TIME_PATTERN_SHORT = "dd/MM/yy HH:mm:ss";
- /**
- * date format dd/MM/yy HH24:mm
- */
- public static final String TIME_PATTERN_SHORT_1 = "yyyy/MM/dd HH:mm";
- /**
- * date format yyyy年MM月dd日 HH:mm:ss
- */
- public static final String TIME_PATTERN_SHORT_2 = "yyyy年MM月dd日 HH:mm:ss";
- /**
- * date format yyyyMMddHHmmss
- */
- public static final String TIME_PATTERN_SESSION = "yyyyMMddHHmmss";
- /**
- * date format yyyyMMddHHmmssSSS
- */
- public static final String TIME_PATTERN_MILLISECOND = "yyyyMMddHHmmssSSS";
- /**
- * date format yyyyMMdd
- */
- public static final String DATE_FMT_0 = "yyyyMMdd";
- /**
- * date format yyyy/MM/dd
- */
- public static final String DATE_FMT_1 = "yyyy/MM/dd";
- /**
- * date format yyyy/MM/dd hh:mm:ss
- */
- public static final String DATE_FMT_2 = "yyyy/MM/dd hh:mm:ss";
- /**
- * date format yyyy-MM-dd
- */
- public static final String DATE_FMT_3 = "yyyy-MM-dd";
- /**
- * date format yyyy年MM月dd日
- */
- public static final String DATE_FMT_4 = "yyyy年MM月dd日";
- /**
- * date format yyyy-MM-dd HH
- */
- public static final String DATE_FMT_5 = "yyyy-MM-dd HH";
- /**
- * date format yyyy-MM
- */
- public static final String DATE_FMT_6 = "yyyy-MM";
- /**
- * date format MM月dd日 HH:mm
- */
- public static final String DATE_FMT_7 = "MM月dd日 HH:mm";
- /**
- * date format MM月dd日 HH:mm
- */
- public static final String DATE_FMT_8 = "HH:mm:ss";
- /**
- * date format MM月dd日 HH:mm
- */
- public static final String DATE_FMT_9 = "yyyy.MM.dd";
- public static final String DATE_FMT_10 = "HH:mm";
- public static final String DATE_FMT_11 = "yyyy.MM.dd HH:mm:ss";
- /**
- * date format yyyy年MM月dd日
- */
- public static final String DATE_FMT_12 = "MM月dd日";
- public static final String DATE_FMT_13 = "yyyy年MM月dd日HH时mm分";
- public static final String DATE_FMT_14 = "yyyyMM";
- public static final String DATE_FMT_15 = "MM-dd HH:mm:ss";
- public static final String DATE_FMT_16 = "yyyyMMddHHmm";
- public static final String DATE_FMT_17 = "HHmmss";
- public static final String DATE_FMT_18 = "yyyy";
- /**
- * date format yyyy-MM-dd HH:mm:ss
- */
- public static final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
- private static final Logger logger = LoggerFactory.getLogger(DateUtil.class);
- /**
- * localDateTime 转 自定义格式string
- *
- * @param localDateTime
- * @param format 例:yyyy-MM-dd hh:mm:ss
- * @return
- */
- public static String formatLocalDateTimeToString(LocalDateTime localDateTime, String format) {
- try {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
- return localDateTime.format(formatter);
- } catch (DateTimeParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * string 转 LocalDateTime
- *
- * @param dateStr 例:"2017-08-11 01:00:00"
- * @param format 例:"yyyy-MM-dd HH:mm:ss"
- * @return
- */
- public static LocalDateTime stringToLocalDateTime(String dateStr, String format) {
- try {
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
- return LocalDateTime.parse(dateStr, formatter);
- } catch (DateTimeParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * 根据时间获取当月有多少天数
- *
- * @param date
- * @return
- */
- public static int getActualMaximum(Date date) {
- return dateToLocalDateTime(date).getMonth().length(dateToLocalDate(date).isLeapYear());
- }
- /**
- * 根据日期获得星期
- *
- * @param date
- * @return 1:星期一;2:星期二;3:星期三;4:星期四;5:星期五;6:星期六;7:星期日;
- */
- public static int getWeekOfDate(Date date) {
- return dateToLocalDateTime(date).getDayOfWeek().getValue();
- }
- /**
- * 计算两个日期LocalDate相差的天数,不考虑日期前后,返回结果>=0
- *
- * @param before
- * @param after
- * @return
- */
- public static int getAbsDateDiffDay(LocalDate before, LocalDate after) {
- return Math.abs(Period.between(before, after).getDays());
- }
- /**
- * 计算两个时间LocalDateTime相差的天数,不考虑日期前后,返回结果>=0
- *
- * @param before
- * @param after
- * @return
- */
- public static int getAbsTimeDiffDay(LocalDateTime before, LocalDateTime after) {
- return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getDays());
- }
- /**
- * 计算两个时间LocalDateTime相差的月数,不考虑日期前后,返回结果>=0
- *
- * @param before
- * @param after
- * @return
- */
- public static int getAbsTimeDiffMonth(LocalDateTime before, LocalDateTime after) {
- return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getMonths());
- }
- /**
- * 计算两个时间LocalDateTime相差的年数,不考虑日期前后,返回结果>=0
- *
- * @param before
- * @param after
- * @return
- */
- public static int getAbsTimeDiffYear(LocalDateTime before, LocalDateTime after) {
- return Math.abs(Period.between(before.toLocalDate(), after.toLocalDate()).getYears());
- }
- /**
- * 根据传入日期返回星期几
- *
- * @param date 日期
- * @return 1-7 1:星期天,2:星期一,3:星期二,4:星期三,5:星期四,6:星期五,7:星期六
- */
- public static int getDayOfWeek(Date date) {
- Calendar cal = new GregorianCalendar();
- cal.setTime(date);
- return cal.get(Calendar.DAY_OF_WEEK);
- }
- /**
- * 获取指定日期的当月的月份数
- *
- * @param date
- * @return
- */
- public static int getLastMonth(Date date) {
- return dateToLocalDateTime(date).getMonth().getValue();
- }
- /**
- * 特定日期的当月第一天
- *
- * @param date
- * @return
- */
- public static LocalDate newThisMonth(Date date) {
- LocalDate localDate = dateToLocalDate(date);
- return LocalDate.of(localDate.getYear(), localDate.getMonth(), 1);
- }
- /**
- * 特定日期的当月最后一天
- *
- * @param date
- * @return
- */
- public static LocalDate lastThisMonth(Date date) {
- int lastDay = getActualMaximum(date);
- LocalDate localDate = dateToLocalDate(date);
- return LocalDate.of(localDate.getYear(), localDate.getMonth(), lastDay);
- }
- /**
- * 特定日期的当年第一天
- *
- * @param date
- * @return
- */
- public static LocalDate newThisYear(Date date) {
- LocalDate localDate = dateToLocalDate(date);
- return LocalDate.of(localDate.getYear(), 1, 1);
- }
- public static void main(String[] args) {
- }
- public static Timestamp getCurrentDateTime() {
- return new Timestamp(Instant.now().toEpochMilli());
- }
- /**
- * 获取当前时间
- *
- * @return LocalDateTime
- */
- public static LocalDateTime getCurrentLocalDateTime() {
- return LocalDateTime.now(Clock.system(ZoneId.of("Asia/Shanghai")));
- }
- /**
- * 修改日期时间的时间部分
- *
- * @param date
- * @param customTime 必须为"hh:mm:ss"这种格式
- */
- public static LocalDateTime reserveDateCustomTime(Date date, String customTime) {
- String dateStr = dateToLocalDate(date).toString() + " " + customTime;
- return stringToLocalDateTime(dateStr, "yyyy-MM-dd HH:mm:ss");
- }
- /**
- * 修改日期时间的时间部分
- *
- * @param date
- * @param customTime 必须为"hh:mm:ss"这种格式
- */
- public static LocalDateTime reserveDateCustomTime(Timestamp date, String customTime) {
- String dateStr = timestampToLocalDate(date).toString() + " " + customTime;
- return stringToLocalDateTime(dateStr, "yyyy-MM-dd HH:mm:ss");
- }
- /**
- * 把日期后的时间归0 变成(yyyy-MM-dd 00:00:00:000)
- *
- * @param date
- * @return LocalDateTime
- */
- public static final LocalDateTime zerolizedTime(Date date) {
- LocalDateTime localDateTime = dateToLocalDateTime(date);
- return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0, 0);
- }
- /**
- * 把时间变成(yyyy-MM-dd 00:00:00:000)
- *
- * @param date
- * @return LocalDateTime
- */
- public static LocalDateTime zerolizedTime(Timestamp date) {
- LocalDateTime localDateTime = timestampToLocalDateTime(date);
- return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 0, 0, 0, 0);
- }
- /**
- * 把日期的时间变成(yyyy-MM-dd 23:59:59:999)
- *
- * @param date
- * @return LocalDateTime
- */
- public static LocalDateTime getEndTime(Date date) {
- LocalDateTime localDateTime = dateToLocalDateTime(date);
- return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59, 999 * 1000000);
- }
- /**
- * 把时间变成(yyyy-MM-dd 23:59:59:999)
- *
- * @param date
- * @return LocalDateTime
- */
- public static LocalDateTime getEndTime(Timestamp date) {
- LocalDateTime localDateTime = timestampToLocalDateTime(date);
- return LocalDateTime.of(localDateTime.getYear(), localDateTime.getMonth(), localDateTime.getDayOfMonth(), 23, 59, 59, 999 * 1000000);
- }
- /**
- * 计算特定时间到 当天 23.59.59.999 的秒数
- *
- * @return
- */
- public static int calculateToEndTime(Date date) {
- LocalDateTime localDateTime = dateToLocalDateTime(date);
- LocalDateTime end = getEndTime(date);
- return (int) (end.toEpochSecond(ZoneOffset.UTC) - localDateTime.toEpochSecond(ZoneOffset.UTC));
- }
- /**
- * 增加或减少年/月/周/天/小时/分/秒数
- *
- * @param localDateTime 例:ChronoUnit.DAYS
- * @param chronoUnit
- * @param num
- * @return LocalDateTime
- */
- public static LocalDateTime addTime(LocalDateTime localDateTime, ChronoUnit chronoUnit, int num) {
- return localDateTime.plus(num, chronoUnit);
- }
- /**
- * 增加或减少年/月/周/天/小时/分/秒数
- *
- * @param chronoUnit 例:ChronoUnit.DAYS
- * @param num
- * @return LocalDateTime
- */
- public static LocalDateTime addTime(Date date, ChronoUnit chronoUnit, int num) {
- long nanoOfSecond = (date.getTime() % 1000) * 1000000;
- LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
- return localDateTime.plus(num, chronoUnit);
- }
- /**
- * 增加或减少年/月/周/天/小时/分/秒数
- *
- * @param chronoUnit 例:ChronoUnit.DAYS
- * @param num
- * @return LocalDateTime
- */
- public static LocalDateTime addTime(Timestamp date, ChronoUnit chronoUnit, int num) {
- long nanoOfSecond = (date.getTime() % 1000) * 1000000;
- LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
- return localDateTime.plus(num, chronoUnit);
- }
- /**
- * Date 转 LocalDateTime
- *
- * @param date
- * @return LocalDateTime
- */
- public static LocalDateTime dateToLocalDateTime(Date date) {
- long nanoOfSecond = (date.getTime() % 1000) * 1000000;
- LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, (int) nanoOfSecond, ZoneOffset.of("+8"));
- return localDateTime;
- }
- /**
- * Timestamp 转 LocalDateTime
- *
- * @param date
- * @return LocalDateTime
- */
- public static LocalDateTime timestampToLocalDateTime(Timestamp date) {
- LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(date.getTime() / 1000, date.getNanos(), ZoneOffset.of("+8"));
- return localDateTime;
- }
- /**
- * Date 转 LocalDateTime
- *
- * @param date
- * @return LocalDate
- */
- public static LocalDate dateToLocalDate(Date date) {
- return dateToLocalDateTime(date).toLocalDate();
- }
- /**
- * timestamp 转 LocalDateTime
- *
- * @param date
- * @return LocalDate
- */
- public static LocalDate timestampToLocalDate(Timestamp date) {
- return timestampToLocalDateTime(date).toLocalDate();
- }
- /**
- * 比较两个LocalDateTime是否同一天
- *
- * @param begin
- * @param end
- * @return
- */
- public static boolean isTheSameDay(LocalDateTime begin, LocalDateTime end) {
- return begin.toLocalDate().equals(end.toLocalDate());
- }
- /**
- * 比较两个时间LocalDateTime大小
- *
- * @param time1
- * @param time2
- * @return 1:第一个比第二个大;0:第一个与第二个相同;-1:第一个比第二个小
- */
- public static int compareTwoTime(LocalDateTime time1, LocalDateTime time2) {
- if (time1.isAfter(time2)) {
- return 1;
- } else if (time1.isBefore(time2)) {
- return -1;
- } else {
- return 0;
- }
- }
- /**
- * 比较time1,time2两个时间相差的秒数,如果time1<=time2,返回0
- *
- * @param time1
- * @param time2
- */
- public static long getTwoTimeDiffSecond(Timestamp time1, Timestamp time2) {
- long diff = timestampToLocalDateTime(time1).toEpochSecond(ZoneOffset.UTC) - timestampToLocalDateTime(time2).toEpochSecond(ZoneOffset.UTC);
- if (diff > 0) {
- return diff;
- } else {
- return 0;
- }
- }
- /**
- * 比较time1,time2两个时间相差的分钟数,如果time1<=time2,返回0
- *
- * @param time1
- * @param time2
- */
- public static long getTwoTimeDiffMin(Timestamp time1, Timestamp time2) {
- long diff = getTwoTimeDiffSecond(time1, time2) / 60;
- if (diff > 0) {
- return diff;
- } else {
- return 0;
- }
- }
- /**
- * 比较time1,time2两个时间相差的小时数,如果time1<=time2,返回0
- *
- * @param time1
- * @param time2
- */
- public static long getTwoTimeDiffHour(Timestamp time1, Timestamp time2) {
- long diff = getTwoTimeDiffSecond(time1, time2) / 3600;
- if (diff > 0) {
- return diff;
- } else {
- return 0;
- }
- }
- /**
- * 判断当前时间是否在时间范围内
- *
- * @param startTime
- * @param endTime
- * @return
- */
- public static boolean isTimeInRange(Date startTime, Date endTime) throws Exception {
- LocalDateTime now = getCurrentLocalDateTime();
- LocalDateTime start = dateToLocalDateTime(startTime);
- LocalDateTime end = dateToLocalDateTime(endTime);
- return (start.isBefore(now) && end.isAfter(now)) || start.isEqual(now) || end.isEqual(now);
- }
- }
- http://blog.csdn.net/chenleixing/article/details/44408875
- ————————————————
- 版权声明:本文为CSDN博主「feicongcong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
- 原文链接:https://blog.csdn.net/feicongcong/article/details/78224494
jdk8 时间日期工具类(转)的更多相关文章
- 11、Java 日期时间 日期工具类
一.简介 在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题.故此,Java8引入了一套全新的日期时间处理 ...
- 【commons】时间日期工具类——commons-lang3-time
推荐参考:http://www.cnblogs.com/java-class/p/4845962.html https://blog.csdn.net/yihaoawang/article/detai ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- [java工具类01]__构建格式化输出日期和时间的工具类
在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...
- Java日期时间实用工具类
Java日期时间实用工具类 1.Date (java.util.Date) Date(); 以当前时间构造一个Date对象 Date(long); 构造函数 ...
- Java获取上周,本周,本月,本年,开始结束时间 。日期工具类
由于获取日期经常会使用到,所有我自己写了一个工具类 1.基本上能用上的都写出来了,包括:1)获取当天的开始时间 2)获取当天的结束时间 3)获取昨天的开始时间 4)获取昨天的结束时间 5)获取明天的开 ...
- 日期工具类 - DateUtil.java
日期工具类,提供对日期的格式化和转换方法.获取区间日期.指定日期.每月最后一天等. 源码如下:(点击下载 -DateUtil.java.commons-lang-2.6.jar ) import ja ...
- JS 日期工具类-基于yDate
源码下载 前言:最近在用到JS日期操作时,发现有一些不方便,于是搜素了一些网上的资料,基于一个开源工具类-yDate 进行了个性化定制,封装成了一个日期工具类工具函数大概介绍:1.普通的日期操作2. ...
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
随机推荐
- confluence导出PDF格式文件不显示中文解决
由于confluence导出PDF格式文件需要应用字体文件,下载字体文件在confluence管理员界面安装即可. 我这里使用从simhei.ttf楷体,可以从windowns主机里下载(c:/win ...
- 使用 Mybatis-plus 进行 crud 操作
1 Mybatis-Plus简介 1.1 什么是Mybatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化 ...
- 【AtCoder】ARC079
ARC079题解 C - Cat Snuke and a Voyage #include <bits/stdc++.h> #define fi first #define se secon ...
- 【k8s第二步】Kubernetes-Kubeadm部署安装【已修正错误】
⒈开启kube-proxy的ipvs的前置条件 模式改为lvs调度的方式,kube-proxy主要解决的是svc(service)与pod之间的调度关系,ipvs的调度方式可以极大的增加它的访问效率, ...
- VIM纵向编辑【转】
原文:https://www.ibm.com/developerworks/cn/linux/l-cn-vimcolumn/index.html Vim 的纵向编辑模式启动方便,使用灵活,还可以配合上 ...
- MySQL SELECT语法(四)UNION语法详解
源自MySQL 5.7 官方手册:13.2.9.3 UNION Syntax 一.UNION语法 UNION用于将多个SELECT语句的结果合并到一个结果集中. SELECT ... UNION [A ...
- 泛型约束:接口约束、new()构造函数约束、组合约束(即多种约束合并)
泛型 接口约束: using System; namespace ConsoleApp1 { /* * * 接口约束:where T:interfaceName * T是类型形参的名称,interfa ...
- sqlserver跨库操作数据
垮库只能读操作,写操作需要设置权限. USE [jdddb] GO /****** Object: StoredProcedure [dbo].[proc_LYOrderCancel] Script ...
- 每天一个Linux命令之:chage
命令简介: 该命令用于密码时效管理.它可以修改账号和密码的有效期.对于chage命令的描述如下所示: The chage command changes the number of days betw ...
- 《数字图像处理(MATLAB)》冈萨雷斯
<数字图像处理(MATLAB)>冈萨雷斯 未完结! 参考:数字图像处理——https://blog.csdn.net/dujing2019/article/category/8820151 ...