package lizikj.bigwheel.common.vo.merchandise.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import org.apache.log4j.Logger; /**
* 时间帮助类
*
*/
public class DateUtil { final static Logger logger = Logger.getLogger(DateUtil.class); /**
* 判断是否是周末
*
* @return
*/
public static boolean isWeek() {
Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (week == 6 || week == 0) {
return true;
}
return false;
} /**
* 判断时间是否在时间段内
*
* @param date
* 当前时间 yyyy-MM-dd HH:mm:ss
* @param strDateBegin
* 开始时间 00:00:00
* @param strDateEnd
* 结束时间 00:05:00
* @return
*/
public static boolean isTimePeriod(Date date, String strDateBegin, String strDateEnd) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(date);
// 截取当前时间时分秒
int strDateH = Integer.parseInt(strDate.substring(11, 13));
int strDateM = Integer.parseInt(strDate.substring(14, 16));
int strDateS = Integer.parseInt(strDate.substring(17, 19));
// 截取开始时间时分秒
int strDateBeginH = Integer.parseInt(strDateBegin.substring(0, 2));
int strDateBeginM = Integer.parseInt(strDateBegin.substring(3, 5));
int strDateBeginS = Integer.parseInt(strDateBegin.substring(6, 8));
// 截取结束时间时分秒
int strDateEndH = Integer.parseInt(strDateEnd.substring(0, 2));
int strDateEndM = Integer.parseInt(strDateEnd.substring(3, 5));
int strDateEndS = Integer.parseInt(strDateEnd.substring(6, 8));
if ((strDateH >= strDateBeginH && strDateH <= strDateEndH)) {
// 当前时间小时数在开始时间和结束时间小时数之间
if (strDateH > strDateBeginH && strDateH < strDateEndH) {
return true;
// 当前时间小时数等于开始时间小时数,分钟数在开始和结束之间
} else if (strDateH == strDateBeginH && strDateM >= strDateBeginM && strDateM <= strDateEndM) {
return true;
// 当前时间小时数等于开始时间小时数,分钟数等于开始时间分钟数,秒数在开始和结束之间
} else if (strDateH == strDateBeginH && strDateM == strDateBeginM && strDateS >= strDateBeginS
&& strDateS <= strDateEndS) {
return true;
}
// 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数小等于结束时间分钟数
else if (strDateH >= strDateBeginH && strDateH == strDateEndH && strDateM <= strDateEndM) {
return true;
// 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数等于结束时间分钟数,秒数小等于结束时间秒数
} else if (strDateH >= strDateBeginH && strDateH == strDateEndH && strDateM == strDateEndM
&& strDateS <= strDateEndS) {
return true;
} else {
return false;
}
} else {
return false;
}
} /**
* 判断当前日期是否在一个日期范围内
*
* @param fromDate
* @param toDate
* @return
*/
public static boolean isDate(Date fromDate, Date toDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String d1 = sdf.format(new Date());// 第一个时间 try {
Date testDate = sdf.parse(d1);
// 1、 交换开始和结束日期
if (fromDate.getTime() > toDate.getTime()) {
Date tempDate = fromDate;
fromDate = toDate;
toDate = tempDate;
}
// 2、缩小范围
long testDateTime = testDate.getTime();
if ((testDateTime > fromDate.getTime() && testDateTime > toDate.getTime())
|| testDateTime < fromDate.getTime() && testDateTime < toDate.getTime()) {
return false;
}
} catch (Exception e) {
logger.error("isDate is error", e);
}
return true;
} // 最近一周
public static String getWeek(int num) {
String result = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cl = Calendar.getInstance();
cl.add(Calendar.WEEK_OF_YEAR, -1); // 一周
Date dateFrom = cl.getTime();
result = sdf.format(dateFrom);
// System.out.println(sdf.format(dateFrom)+"到"+sdf.format(dateNow));
return result;
} // 最近一月
public static String getMonth(int num) {
String result = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cl = Calendar.getInstance();
cl.add(Calendar.MONTH, -num); // 一个月
Date dateFrom = cl.getTime();
result = sdf.format(dateFrom);
return result;
} // 当前时间的前一天
public static Date getNextDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, -1);
date = calendar.getTime();
return date;
} // 判断是否在时间前后
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
}
} catch (Exception e) {
logger.error("compare_date is error", e);
}
return 0;
} /**
* 判断指定日期是否在一个日期范围内
*
* @param fromDate
* 范围开始日期
* @param toDate
* 范围结束日期
* @param testDate
* 测试日期
* @return 在范围内true,否则false
*/
public static boolean betweenDays(Date fromDate, Date toDate, Date testDate) {
if (fromDate == null || toDate == null || testDate == null) {
return false;
} // 1、 交换开始和结束日期
if (fromDate.getTime() > toDate.getTime()) {
Date tempDate = fromDate;
fromDate = toDate;
toDate = tempDate;
} // 2、缩小范围
long testDateTime = testDate.getTime();
if ((testDateTime > fromDate.getTime() && testDateTime > toDate.getTime())
|| testDateTime < fromDate.getTime() && testDateTime < toDate.getTime()) {
return false;
} return true;
} public static Date getDateTime(long now) {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(now);
System.out.println(now + " = " + formatter.format(calendar.getTime()));
String result = formatter.format(calendar.getTime());
return calendar.getTime();
} public static Date transferLongToDate(Long millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date(millSec);
return date;
} public static void main(String[] args) {
String now = "1475921070450";
System.out.println(transferLongToDate(Long.valueOf(now)));
}
}
/**
* 判断两个时间区间是否有交集的方法
*
* @param date1_1
* 区间1的时间始
* @param date1_2
* 区间1的时间止
* @param date2_1
* 区间2的时间始
* @param date2_2
* 区间2的时间止
* @return 区间1和区间2如果存在交集,则返回true,否则返回falses
*/
public static boolean test(String startA, String endA, String startB, String endB) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date a1 = sdf.parse(startA);
Date a2 = sdf.parse(endA); Date b1 = sdf.parse(startB);
Date b2 = sdf.parse(endB); /**
* if(第一组最后时间小于等于第二组最前时间 || 第一组最前时间大于等于第二组最后时间){ 无交集 } else{ 有交集 }
*/
if ((a2.getTime() <= b1.getTime()) || a1.getTime() >= b2.getTime()) {
return false;
} else {
return true;
}
} public static void main(String[] args) throws Exception {
String dateStr1_1 = "2017-10-01 00:00:00";
String dateStr1_2 = "2017-10-03 23:59:59";
String dateStr2_1 = "2017-10-04 00:00:00";
String dateStr2_2 = "2017-10-05 23:59:59"; boolean b = test(dateStr1_1, dateStr1_2, dateStr2_1, dateStr2_2);
System.out.println(b == true ? "有交集" : "无交集");
}
/**
* 判断时间是否在时间段内
* @param nowTime
* @param beginTime
* @param endTime
* @return
*/
public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
Calendar date = Calendar.getInstance();
date.setTime(nowTime); Calendar begin = Calendar.getInstance();
begin.setTime(beginTime); Calendar end = Calendar.getInstance();
end.setTime(endTime); if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import com.baoqilai.ddg.exception.BaseRuntimeException; public class DateUtil { /**
*
* @Description: 给出的时间和当前时间的小时差
* @date 2017年3月24日 下午5:47:49
* @param startDate
* @return
*/
public static double getHour(Date startDate) {
long time = startDate.getTime();
Date date = new Date();
long nowTime = date.getTime();
double mil = (nowTime - time) / 1000;
double hour = mil / 3600;
return hour;
} /**
*
* @Description: 计算两个时间的 天数差 过 00:00算一条
* @date 2017年3月24日 下午6:34:21
* @param startDate
* @return
*/
public static int getDay(Date startDate) {
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String nowDate = formatter.format(date);
String sd = formatter.format(startDate);
int day = Integer.parseInt(nowDate) - Integer.parseInt(sd);
return day;
} public static String getDateString(Date startDate,String fmt) {
SimpleDateFormat formatter = new SimpleDateFormat(fmt);
String nowDate = formatter.format(startDate);
return nowDate;
} public static Date getNowDate() {
String str = "2017-03-23 13:30:20";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = null;
try {
parse = formatter.parse(str); } catch (ParseException e) {
e.printStackTrace();
}
return parse;
} public static void main(String[] args) {
Date nowDate = getNowDate();
/*
* double hour = getHour(nowDate);
*
* if (hour > 5) { System.out.println("-------------"); }
*
* System.out.println(hour);
*/
Integer day = getDay(nowDate);
System.out.println(day);
} /**
* desc: 将字符串转换为date对象
* date: 2017/5/20 15:32
* @param date
* @return
*/
public static Date formart(String date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date2 = sdf.parse(date);
return date2;
} catch (ParseException e) {
throw new BaseRuntimeException("传入的日期格式有误!(正确格式为:yyyy-MM-dd HH:mm:ss)");
} } /**
* desc: 判断两个时间段是否有交集
* date: 2017/5/20 15:37
* @param startdate1
* @param enddate1
* @param startdate2
* @param enddate2
* @return
*/
public static boolean isOverlap (String startdate1,String enddate1,String startdate2,String enddate2){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date leftStartDate = null;
Date leftEndDate = null;
Date rightStartDate = null;
Date rightEndDate = null;
try {
leftStartDate = format.parse(startdate1);
leftEndDate = format.parse(enddate1);
rightStartDate = format.parse(startdate2);
rightEndDate = format.parse(enddate2);
} catch (ParseException e) {
return false;
} return
((leftStartDate.getTime() >= rightStartDate.getTime())
&& leftStartDate.getTime() < rightEndDate.getTime())
||
((leftStartDate.getTime() > rightStartDate.getTime())
&& leftStartDate.getTime() <= rightEndDate.getTime())
||
((rightStartDate.getTime() >= leftStartDate.getTime())
&& rightStartDate.getTime() < leftEndDate.getTime())
||
((rightStartDate.getTime() > leftStartDate.getTime())
&& rightStartDate.getTime() <= leftEndDate.getTime()); } /**
* desc: 判断当前时间是否包含在指定的时间区间
* date: 2017/5/25 10:49
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
public static boolean isInDate(Date startTime,Date endTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String strDate = sdf.format(new Date());
String strDateBegin = sdf.format(startTime);
String strDateEnd = sdf.format(endTime); // 截取当前时间年月日 转成整型
Long tempDate=Long.parseLong(strDate);
// 截取开始时间年月日 转成整型
Long tempDateBegin=Long.parseLong(strDateBegin);
// 截取结束时间年月日 转成整型
Long tempDateEnd=Long.parseLong(strDateEnd);
if ((tempDate >= tempDateBegin && tempDate <= tempDateEnd)) {
return true;
} else {
return false;
}
} /**
* 指定日期加上天数后的日期
* @param num 为增加的天数
* @param newDate 创建时间
* @return
* @throws ParseException
*/
public static Date plusDay(int num,String newDate) throws ParseException{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date currdate = format.parse(newDate);
System.out.println("现在的日期是:" + currdate);
Calendar ca = Calendar.getInstance();
ca.add(Calendar.DATE, num);// num为增加的天数,可以改变的
currdate = ca.getTime();
String enddate = format.format(currdate);
System.out.println("增加天数以后的日期:" + enddate);
return currdate;
} /**
* 当前日期加上天数后的日期
* @param num 为增加的天数
* @return
*/
public static Date plusDay2(int num){
Date d = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currdate = format.format(d);
System.out.println("现在的日期是:" + currdate); Calendar ca = Calendar.getInstance();
ca.add(Calendar.DATE, num);// num为增加的天数,可以改变的
d = ca.getTime();
String enddate = format.format(d);
System.out.println("增加天数以后的日期:" + enddate);
return d;
} }

date 工具类的更多相关文章

  1. 自写Date工具类

    以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后 ...

  2. Date 工具类(包含常用的一些时间方法)

    package com.fh.util; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseE ...

  3. JAVA时间Date工具类

    package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...

  4. Date工具类

    总结了下项目中常用的时间转化方法,目前就这么点啦,以后再慢慢添加,先储备起来,免得丢啦. package com.example.keranbin.testdemo; import android.u ...

  5. Java 日期格式化,Java 日期工具类,Java Date工具类

    ================================ ©Copyright 蕃薯耀 2020-01-19 https://www.cnblogs.com/fanshuyao/ import ...

  6. Date工具类中CompareTo()

    A<B 结果是-1 A>B 结果是1 A==B 结果是0

  7. Java基础知识强化92:日期工具类的编写和测试案例

    1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...

  8. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...

  9. 常用工具类(System,Runtime,Date,Calendar,Math)

    一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...

随机推荐

  1. 如何将python中的List转化成dictionary

    问题1:如何将一个list转化成一个dictionary? 问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的value list : ['品牌', ...

  2. ELK logstash 启动慢的解决方法

    最近开始测试部署ELK, 在部署logstash的时候出现一个故障: logstash在第一次安装完成以后启动正常, 但是之后启动时间越来越长, 5分钟以上甚至10多分钟.以至于怀疑程序错误, 在重装 ...

  3. SAP请求号的传输

    SAP传输目的: SAP传输目的是把开发机中的程序或对象传输到对应的测试机或生成机中,保持各系统的同步性,方便测试和最后的部署! SAP求情号传输的步骤: 1.创建一个请求号 2.用SE10进入如下界 ...

  4. python time 和 datetime 模块

    时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time())”,返回的是float类型. 格式化的时间字 ...

  5. linux操作系统-设置静态ip

    在使用linux虚拟机的时候因为经常有关机的需求,然后重新开机后可能面临这上一次获取的ip被改变,在这里我分享一下在linux 下设置静态ip的经验 1.查看路由状态 [root@localhost ...

  6. c# 关于取小数点后值四舍五入精度问题

    ---恢复内容开始--- 最近做一个校验码验证法算法的生成程序,涉及到取小数点后值的问题;对其中遇到的问题做一下总结: 1:ToString()转换时碰到0.9999999999999之类的数据,给自 ...

  7. springboot添加fluent日志记录

    istio默认会进行日志的记录,但是仅仅记录到服务.以及服务之间调用的信息,不记录业务日志. 如: 所以需要添加业务日志记录. 1.引入依赖 <dependency>     <gr ...

  8. mysql-5.7.19免安装版的配置方法

    1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包     将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是:     "D:\Pr ...

  9. C++中的getline()

    总结: 尽量使用全局函数string类中的getline(),其读入的第二个参数为string类型,不设置默认是遇到回车停止读入操作 cin.getline是针对数组字符串的,以指定的地址为存放第一个 ...

  10. DOM心得

    一.自定义属性值两种方法的注意事项 1.用元素节点.属性(元素节点[属性])绑定的属性值不会出现在标签上. 2.用get/set/removeAttribut(,)等绑定的属性会出现在标签上.且两种方 ...