date 工具类
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 工具类的更多相关文章
- 自写Date工具类
以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类.因此整理出经常使用的一些转换,用作记录,以便以后 ...
- Date 工具类(包含常用的一些时间方法)
package com.fh.util; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseE ...
- JAVA时间Date工具类
package com.common.util; import java.text.DateFormat; import java.text.ParseException; import java.t ...
- Date工具类
总结了下项目中常用的时间转化方法,目前就这么点啦,以后再慢慢添加,先储备起来,免得丢啦. package com.example.keranbin.testdemo; import android.u ...
- Java 日期格式化,Java 日期工具类,Java Date工具类
================================ ©Copyright 蕃薯耀 2020-01-19 https://www.cnblogs.com/fanshuyao/ import ...
- Date工具类中CompareTo()
A<B 结果是-1 A>B 结果是1 A==B 结果是0
- Java基础知识强化92:日期工具类的编写和测试案例
1. DateUtil.java,代码如下: package cn.itcast_04; import java.text.ParseException; import java.text.Simpl ...
- 第一章 Java工具类目录
在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...
- 常用工具类(System,Runtime,Date,Calendar,Math)
一.System: 一个java.lang包中的静态工具类. 三大字段: static PrintStream err “标准”错误输出流. static InputStream in “标准”输入流 ...
随机推荐
- android闪退日志收集
写一个工具类,然后直接引用,简单粗暴. package com.socialsecurity.main.exception; import java.io.File; import java.io.F ...
- Bootstrap(3) 表格与按钮
1.表格 基本格式,实现基本的表格样式 <table class="table"> <thead> <tr> <th>编号</ ...
- SQL Server 数据库备份还原常用SQL语句及注意
1.备份数据库 backup database db_name to disk='d:\db_name.bak' with format --通过使用with format可以做到覆盖任何现有的备份和 ...
- Varnish 入门
本文将介绍 varnish 的工作流程,安装以及 varnish 的配置三个方面的内容.首先简单的介绍 varnish 以及其工作流程,大概了解其内部原理,然后介绍了 varnish 的安装方法,最后 ...
- Liunx cp
功能: 复制文件或目录 使用权限:所有使用者说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若同 ...
- eclipse集成svn进行项目开发
在用eclipse进行项目开发的时候,报了一个错误:switch不支持String的参数.这个问题的原因是因为jre版本低于1.7,而当前的eclipse版本最高只能选1.6,无奈,我只能考虑换ecl ...
- BZOJ1051或洛谷2341 [HAOI2006]受欢迎的牛
BZOJ原题链接 洛谷原题链接 显然在一个强连通分量里的奶牛都可以相互喜欢,所以可以用\(tarjan\)求强连通并缩点. 要求明星奶牛必须被所有人喜欢,显然缩点后的图必须满足只有一个点没有出度,因为 ...
- CButtonST|CUniButton等按钮类的使用
CButtonST CButtonST类的使用参考链接:http://www.cnblogs.com/lidabo/archive/2012/12/17/2821122.html CCeButtonS ...
- PS制作纸质复古野外露营插画分享
经常有人说一些复古风,就觉得蛮难,其实制作过程其实没有想象中复杂,从1850年到2017年,通过这160多年里的平面设计,给我们的作品添加上一些新鲜的灵感和活力,本次教程就来教大家用PS做出耐看的纸质 ...
- Sevlet处理HTML表单
表单<form>用于搜集不同类型的用户输入.可以轻松地将一个HTML表单从一个Servlet发送到浏览器,当用户提交表单时,在表单元素中输入的值就会被当做请求参数发送到服务器. reque ...