package com.tmg.aec.common.until;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @author 段佐才
*/
public class DateUtils {
/**
* 传入年月,得到此月天数
* @param endDay
* @param format 格式
* @return String
*/
public static String getEndDays(String endDay, String format){
Date date;
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
try {
date = dateFormat.parse(endDay);
// 得到当天日期
Calendar cal = Calendar.getInstance();
// 设置指定日期
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,1);
cal.roll(Calendar.DAY_OF_MONTH,-1);
dateFormat = new SimpleDateFormat("dd");
String rel = dateFormat.format(cal.getTime());
return rel;
} catch (ParseException e) {
System.out.println("获取当月最后一天出错");
e.printStackTrace();
return null;
}
}
/**
* 传入年月,得到此月最后一天
* @param endDay
* @param format 格式
* @param newFormat 生成后的格式
* @return Date
*/
public static Date getEndDayToDate(String endDay, String format, String newFormat){
Date date;
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
try {
date = dateFormat.parse(endDay);
// 得到当天日期
Calendar cal = Calendar.getInstance();
// 设置指定日期
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,1);
cal.roll(Calendar.DAY_OF_MONTH,-1);
dateFormat = new SimpleDateFormat(newFormat);
String rel = dateFormat.format(cal.getTime());
return dateFormat.parse(rel);
} catch (ParseException e) {
System.out.println("获取当月最后一天出错");
e.printStackTrace();
return null;
}
}
/**
* 得到此月最后一天
* @param day
* @return
*/
public static Date getEndDayToDate(Date day){
String format = "yyyyMMdd hh:mm:ss";
String day1 = dateFormatToString(day, format);
return getEndDayToDate(day1, format, format);
}
/**
* 得到这个月第一天
* @param day
* @return
*/
public static Date getBeginDayToDate(Date day){
return dateFormatToDate(day, "yyyyMM");
}
/**
* 传入年月,得到此月最后一天
* @param endDay
* @param format 格式
* @param newFormat 生成后的格式
* @return String
*/
public static String getEndDayToString(String endDay, String format, String newFormat){
Date date;
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
try {
date = dateFormat.parse(endDay);
// 得到当天日期
Calendar cal = Calendar.getInstance();
// 设置指定日期
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH,1);
cal.roll(Calendar.DAY_OF_MONTH,-1);
dateFormat = new SimpleDateFormat(newFormat);
String rel = dateFormat.format(cal.getTime());
return rel;
} catch (ParseException e) {
System.out.println("获取当月最后一天出错");
e.printStackTrace();
return null;
}
}
/**
* 把时间转换成指定格式
* @param date
* @param format
* @return Date
*/
public static Date dateFormatToDate(String date, String format){
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
Date rel = null;
try {
rel = dateFormat.parse(date);
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateFormatToDate(String date, String format) ");
e.printStackTrace();
}
return rel;
}
/**
* 把时间转换成指定格式
* @param date
* @param format
* @return Date
*/
public static Date dateFormatToDate(Date date, String format){
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
String rel = dateFormat.format(date);
return dateFormatToDate(rel, format);
}
/**
* 把时间转换成指定格式
* @param date
* @param format
* @return String
*/
public static String dateFormatToString(Date date, String format){
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
return dateFormat.format(date);
}
/**
* 把 String 时间转换成指定格式
* @param date
* @param oldFormat
* @param newFormat
* @return Date
*/
public static Date dateFormatToDate(String date, String oldFormat, String newFormat){
SimpleDateFormat dateFormat = new SimpleDateFormat(oldFormat);
Date d = null;
String d2 = null;
try {
d = dateFormat.parse(date);
dateFormat = new SimpleDateFormat(newFormat);
d2 = dateFormat.format(d);
d = dateFormat.parse(d2);
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateFormatToDate(Date date, String format) in line 148");
e.printStackTrace();
}
//return dateFormatToString(d,newFormat);
return new Date(d.getTime());
}
/**
* 把 String 时间转换成指定格式
* @param date
* @param oldFormat
* @param newFormat
* @return String
*/
public static String dateFormatToString(String date, String oldFormat, String newFormat){
SimpleDateFormat dateFormat = new SimpleDateFormat(oldFormat);
Date d = null;
try {
d = dateFormat.parse(date);
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateFormatToString(Date date, String format) in line 162");
e.printStackTrace();
}
return dateFormatToString(d,newFormat);
}
/**
* 相加指定天数
* @param date
* @param num 天数
* @return Date
*/
public static Date dateAddDays(Date date, Long num){
Long time = date.getTime();
time += (num * 24 * 60 * 60 * 1000);
return new Date(time);
}
/**
* 相加指定天数
* @param date
* @param date 的格式
* @param num 天数
* @return Date
*/
public static Date dateAddDays(String date, String type, Long num){
SimpleDateFormat dateFormat = new SimpleDateFormat(type);
Long time = 0L;
try {
time = dateFormat.parse(date).getTime();
time += (num * 24 * 60 * 60 * 1000);
return new Date(time);
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateAddDays(String date, String type, int num) in line 200");
e.printStackTrace();
}
return null;
}
/**
* 相加指定天数
* @param date
* @param num 天数
* @param returnType 返回的格式
* @return String
*/
public static String dateAddDays(Date date, Long num, String returnType){
SimpleDateFormat dateFormat = new SimpleDateFormat(returnType);
Long time = date.getTime();
Date date_ = null;
time += (num * 24 * 60 * 60 * 1000);
String temp = dateFormat.format(new Date(time));
return temp;
}
/**
* 相加指定天数
* @param date
* @param type date 的格式
* @param num 天数
* @param returnType 返回的格式
* @return String
*/
public static String dateAddDays(String date, String type, Long num, String returnType){
SimpleDateFormat dateFormat = new SimpleDateFormat(returnType);
SimpleDateFormat dateFormat_ = new SimpleDateFormat(type);
Long time = 0L;
try {
time = dateFormat_.parse(date).getTime();
time += (num * 24 * 60 * 60 * 1000);
Date date_ = null;
String temp = dateFormat.format(new Date(time));
return temp;
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateAddDays(String date, String type, int num, String returnType) in line 241");
e.printStackTrace();
}
return null;
}
/**
* 减去指定天数
* @param date
* @param num 天数
* @return Date
*/
public static Date dateMinusDays(Date date, Long num){
Long time = date.getTime();
time -= (num * 24 * 60 * 60 * 1000);
return new Date(time);
}
/**
* 减去指定天数
* @param date
* @param type date 的格式
* @param num 天数
* @return Date
*/
public static Date dateMinusDays(String date, String type, Long num){
SimpleDateFormat dateFormat = new SimpleDateFormat(type);
try {
Long time = dateFormat.parse(date).getTime();
time -= (num * 24 * 60 * 60 * 1000);
return new Date(time);
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateMinusDays(String date, String type, int num) in line 280");
e.printStackTrace();
}
return null;
}
/**
* 减去指定天数
* @param date
* @param num 天数
* @param returnType 返回的格式
* @return String
*/
public static String dateMinusDays(Date date, Long num, String returnType){
SimpleDateFormat dateFormat = new SimpleDateFormat(returnType);
Long time = date.getTime();
Date date_ = null;
time -= (num * 24 * 60 * 60 * 1000);
String temp = dateFormat.format(new Date(time));
return temp;
}
/**
* 减去指定天数
* @param date
* @param type date 的格式
* @param num 天数
* @param returnType 返回的格式
* @return String
*/
public static String dateMinusDays(String date, String type, Long num, String returnType){
SimpleDateFormat dateFormat = new SimpleDateFormat(returnType);
SimpleDateFormat dateFormat_ = new SimpleDateFormat(type);
try {
Long time = dateFormat_.parse(date).getTime();
time -= (num * 24 * 60 * 60 * 1000);
String temp = dateFormat.format(new Date(time));
return temp;
} catch (ParseException e) {
System.out.println("日期格式转换出错:DateUtils.dateMinusDays(String date, String type, iLongnum, String returnType) in line 327");
e.printStackTrace();
}
return null;
}
/**
* 相加指定月数
* @param date
* @param num 月数
* @return Date
*/
public static Date dateAddMonths(Date date, Long num){
StringBuffer time_new;
try {
String y = dateFormatToString(date, "yyyy");
String m = dateFormatToString(date, "MM");
String d = dateFormatToString(date, "dd");
String hmsS = dateFormatToString(date, "HH:mm:ss:SSSS");
int b = (int) (Integer.parseInt(m) + num);
if(b > 12) {
int y_ = b / 12;
b = b % 12;
if(b == 0) b = 12;
y = String.valueOf(Integer.parseInt(y) + y_);
}
if(b < 10)
m = "0" + b;
else
m = String.valueOf(b);
time_new = new StringBuffer(y + m + d + " " + hmsS);
return dateFormatToDate(time_new.toString(), "yyyyMMdd HH:mm:ss:SSSS","yyyyMMdd HH:mm:ss:SSSS");
} catch (NumberFormatException e) {
System.out.println("日期格式转换出错:lines in 369 at DateUtils.dateAddMonths(Date date, int num)");
e.printStackTrace();
return null;
}
}
/**
* 相加指定月数
* @param date
* @param date 的格式
* @param num 月数
* @return Date
*/
public static Date dateAddMonths(String date, String type, Long num){
Date date_ = dateFormatToDate(date, type, type);
return dateAddMonths(date_, num);
}
/**
* 相加指定月数
* @param date
* @param num 月数
* @param returnType 返回的格式
* @return String
*/
public static String dateAddMonths(Date date, Long num, String returnType){
Date d = dateAddMonths(date, num);
return dateFormatToString(d, returnType);
}
/**
* 相加指定月数
* @param date
* @param type date 的格式
* @param num 月数
* @param returnType 返回的格式
* @return String
*/
public static String dateAddMonths(String date, String type, Long num, String returnType){
Date date_ = dateFormatToDate(date, type, returnType);
return dateAddMonths(date_, num, returnType);
}
/**
* 减去指定月数
* @param date
* @param num 月数
* @return Date
*/
public static Date dateMinusMonths(Date date, Long num){
StringBuffer time_new;
try {
String y = dateFormatToString(date, "yyyy");
String m = dateFormatToString(date, "MM");
String d = dateFormatToString(date, "dd");
String hmsS = dateFormatToString(date, "HH:mm:ss:SSSS");
int m_ = (int) (num % 12);
Long y_ = num / 12;
m_ = Integer.parseInt(m) - m_;
if(m_ < 1) {
y_ += 1 ;
m_ = m_ + 12;
if(m_ == 0) m_ = 12;
}
y = String.valueOf(Integer.parseInt(y) - y_);
if(m_ < 10)
m = "0" + m_;
else
m = String.valueOf(m_);
time_new = new StringBuffer(y + m + d + " " + hmsS);
return dateFormatToDate(time_new.toString(), "yyyyMMdd HH:mm:ss:SSSS","yyyyMMdd HH:mm:ss:SSSS");
} catch (NumberFormatException e) {
System.out.println("日期格式转换出错:lines in 369 at DateUtils.dateAddMonths(Date date, int num)");
e.printStackTrace();
return null;
}
}
/**
* 减去指定月数
* @param date
* @param type date 的格式
* @param num 月数
* @return Date
*/
public static Date dateMinusMonths(String date, String type, Long num){
Date d = dateFormatToDate(date, type, "yyyyMMdd HH:mm:ss:SSSS");
return dateMinusMonths(d, num);
}
/**
* 减去指定月数
* @param date
* @param num 月数
* @param returnType 返回的格式
* @return String
*/
public static String dateMinusMonths(Date date, Long num, String returnType){
Date d = dateMinusMonths(date, num);
return dateFormatToString(d, returnType);
}
/**
* 减去指定月数
* @param date
* @param type date 的格式
* @param num 月数
* @param returnType 返回的格式
* @return String
*/
public static String dateMinusMonths(String date, String type, Long num, String returnType){
Date date_ = dateMinusMonths(date, type, num);
return dateFormatToString(date_, returnType);
}
/**
* 得到星期几
* @param date
* @return
*/
public static String getWeek(Date date) {
return dateFormatToString(date, "EEEE");
}
/**
* 得到星期几
* @param date
* @param type
* @return
*/
public static String getWeek(String date, String type) {
return dateFormatToString(dateFormatToDate(date, type), "EEEE");
}
/**
* 得到时间差
* @param begin
* @param end
* @return 月数
*/
public static int dateMinusDateForMonths(Date begin, Date end){
int m1 = Integer.parseInt(dateFormatToString(begin, "MM"));
int m2 = Integer.parseInt(dateFormatToString(end, "MM"));
int y1 = Integer.parseInt(dateFormatToString(begin, "yyyy"));
int y2 = Integer.parseInt(dateFormatToString(end, "yyyy"));
int result = (y2*12 + m2) - (y1*12 + m1);
return result>0?result:result*-1;
}
/**
* 得到时间差
* @param begin
* @param end
* @return 天数
*/
public static long dateMinusDateForDays(Date begin, Date end){
if(begin.getTime() > end.getTime() )
return (begin.getTime() - end.getTime())/(24*60*60*1000);
else return (end.getTime() - begin.getTime())/(24*60*60*1000);
}
/**
* 把时间段切分成每个月如:2010/1/2,2010/3/4 --> [1/2,1/31],[2/1,2/28],[3/1,3/4]
* @param begin
* @param end
* @return 月数组's:[begin, end]
*/
public static List<Date[]> splitDateToDateList(Date begin, Date end){
List<Date[]> ds = new ArrayList();
if (dateFormatToDate(begin, "yyyyMM").getTime() > dateFormatToDate(end, "yyyyMM").getTime())
return null;
else if(dateFormatToDate(begin, "yyyyMM").getTime() == dateFormatToDate(end, "yyyyMM").getTime()){
Date[] d = new Date[2];
d[0] = begin;
d[1] = end;
ds.add(d);
return ds;
}else {
int months = dateMinusDateForMonths(begin, end);
for(int i = 0 ; i <= months ; i++){
Date[] d = new Date[2];
Date now = dateAddMonths(begin, Long.parseLong(i+""));
if(i == 0)
d[0] = begin;
else
d[0] = getBeginDayToDate(now);
if(i == months)
d[1] = end;
else
d[1] = getEndDayToDate(now);
ds.add(d);
}
return ds;
}
}
/**
* 把时间段切分成每个月如:2010/1/2,2010/3/4 --> [1/2,1/31],[2/1,2/28],[3/1,3/4]
* @param begin
* @param end
* @param type 格式
* @return 月数组's:[begin, end]
*/
public static List<String[]> splitDateToStringList(Date startTime,
Date endTime, String type) {
List<Date[]> f_d = splitDateToDateList(startTime, endTime);
List<String[]> f_s = new ArrayList();
for(int i = 0; i < f_d.size(); i++){
String[] e = new String[2];
e[0] = dateFormatToString(f_d.get(i)[0], type);
e[1] = dateFormatToString(f_d.get(i)[1], type);
f_s.add(e);
}
return f_s;
}
public static void main(String[] args) throws ParseException {
/*Date end = new Date();
Date begin = dateMinusDays(end, 66L);
List<String[]> ds = splitDateToStringList(begin, end, "yyyyMMdd");
for(String[] d:ds){
for(String dd:d){
System.out.println(dd);
}
System.out.println("..............");
}*/
}
}
分享到:
相关推荐
java 时间 datatime 工具类
Java 时间工具类详解,主要包含了对时间操作的一些工具方法!将日期对象按照某种格式进行转换,将传入的日期对象按照yyyy-MM-dd格式转换成字符串返回,将插入的字符串按格式转换成对应的日期对象
JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...
Java对时间进行操作的工具类,包括各种时间格式转化的方法以及一些时间比较登方法。
NULL 博文链接:https://fanshuyao.iteye.com/blog/2355386
java时间工具类按照年月周维度在时间区间内输出时间点
就是工作中,遇到的很多日期时间操作,整理了个工具类
java代码-java时间工具类代码合集 ——学习参考资料:仅用于个人学习使用!
没事写了一个关于java时间处理的工具类,很简单
非常好用的Date工具类 1、计算两个日期之间相差的天数 2、判断日期是否为周六日 3、获取当前周开始日期 4、获取当前周结束日期 5、判断年份是否是闰年 6、根据年份和月份计算天数 7、判断日期为该年的第几周 等等
时间类型方面很好用的工具类,包括时间类型的转化与计算等
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 ...[工具类] 时间工具TimeUtil.java [工具类] 连数据库ConnectDB.java
这是一个功能很强大的时间的工具类,是本人在做项目中,积累的,当然也有cope别人的.我是集成了所有好用的类,拿出来分享,希望能帮助大家!!!! 如果还没有实现的功能,请大家留言!我会尽快的更新,实现你们想要的功能.
[工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页...[工具类] 时间工具TimeUtil.java [工具类] 连数据库ConnectDB.java
日期与时间的相互转换,日期与时间戳的相互转换的一个工具类。
JAVA时间工具类,包含时间转换,获取当前时间,日期,周等
4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端simpleServer 6.[工具类] 使用Java程序来实现HTTP文件的队列下载 .java 7.[工具类] 文件操作工具类 .java 8.[工具类] 序列化保存为XML文件的工具类 .java 9....