/**
* 2017年6月26日下午8:54:00
*/
package com.util;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
*
* @author huangtao
* 2017年6月26日下午8:54:00
* bkm
* @parameter
* TODO
*
*/
public class DateUtil2 {
public static final String DATE_NORMAL_FORMAT = "yyyy-MM-dd";
public static final String DATETIME_NORMAL_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_COMPACT_FORMAT = "yyyyMMdd";
public static final String DATETIME_COMPACT_FORMAT = "yyyyMMddHHmmss";
public static final String YM_NORMAL_FORMAT = "yyyy-MM";
public static final String YM_COMPACT_FORMAT = "yyyyMM";
/**
* String转Timestamp
* @param dateStr
* @return
* @author yup
* 2015-1-17
*/
public static Timestamp stringToTimestamp(String dateStr) {
try {
if(dateStr.length() <= 10) {
dateStr += " 00:00:00";
}
return Timestamp.valueOf(dateStr);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* String转Date
* @param dateStr
* @param format
* @return
* @author yup
* 2015-1-17
*/
public static Date stringToDate(String dateStr, String format) {
if(dateStr == null || "".equals(dateStr)){
return null;
}
Date date = null;
//注意format的格式要与日期String的格式相匹配
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
date = sdf.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
/**
* Date转String
* @param date
* @param format
* @return
* @author yup
* 2015-1-17
*/
public static String dateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String currentDate = sdf.format(date);
return currentDate;
}
/**
* Date转Timestamp
* @param date
* @return
* @author yup
* 2015-1-18
*/
public static Timestamp dateToTimestamp(Date date) {
Timestamp ts = new Timestamp(date.getTime());
return ts;
}
/**
* Timestamp转String
* @param ts
* @return
* @author yup
* 2015-1-17
*/
public static String timestampToString(Timestamp ts) {
String tsStr = null;
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_NORMAL_FORMAT);
try {
tsStr = sdf.format(ts);
} catch (Exception e) {
e.printStackTrace();
}
return tsStr;
}
/**
* Timestamp转Date
* @param ts
* @return
* @author yup
* 2015-1-17
*/
public static Date timestampToDate(Timestamp ts) {
return ts;
}
/**
* 获得当前时间并格式化:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String getCurrentTimeNormal() {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_NORMAL_FORMAT);
String currentDate = sdf.format(new Date());
return currentDate;
}
/**
* 获得当前时间并格式化:yyyyMMddHHmmss
* @return
*/
public static String getCurrentTimeCompact() {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_COMPACT_FORMAT);
String currentDate = sdf.format(new Date());
return currentDate;
}
/**
* 获得当前时间并格式化:yyyy-MM-dd
* @return
*/
public static String getCurrentDateNormal() {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_NORMAL_FORMAT);
String currentDate = sdf.format(new Date());
return currentDate;
}
/**
* 获得当前时间并格式化:yyyyMMdd
* @return
*/
public static String getCurrentDateCompact() {
SimpleDateFormat sdf = new SimpleDateFormat(DATE_COMPACT_FORMAT);
String currentDate = sdf.format(new Date());
return currentDate;
}
/**
* 将20101202时间格式化为2010-12-02
*
* @param DateString 时间格式:yyyyMMdd
* @return
*/
public static String getDateCompactToNormal(String DateString){
StringBuilder sb = new StringBuilder();
sb.append(DateString.substring(0,4)).append("-").append(DateString.subSequence(4, 6)).append("-").append(DateString.substring(6, 8));
return sb.toString();
}
/**
* 将20101202101423时间格式化为2010-12-02 10:14:23
*
* @param DateString 时间格式:yyyyMMddHHmmss
* @return
*/
public static String getDateTimeCompactToNormal(String DateString){
StringBuilder sb = new StringBuilder();
sb.append(DateString.substring(0,4)).append("-").append(DateString.subSequence(4, 6)).append("-").append(DateString.substring(6, 8))
.append(" ").append(DateString.substring(8, 10)).append(":").append(DateString.substring(10, 12)).append(":").append(DateString.substring(12));
return sb.toString();
}
/**
* 把界面输入的时间转为间凑的时间字符串
* 将2010-12-02 10:14:23时间格式化为20101202101423
* @param dateNormalStr String
* @return String
*/
public static String getCompactString(String dateNormalStr) {
StringBuffer ret = new StringBuffer();
try {
ret.append(dateNormalStr.substring(0, 4));
ret.append(dateNormalStr.substring(5, 7));
ret.append(dateNormalStr.substring(8, 10));
ret.append(dateNormalStr.substring(11, 13));
ret.append(dateNormalStr.substring(14, 16));
ret.append(dateNormalStr.substring(17, 19));
} catch (Exception ex) {
// 如果字串不够长度,则返回前面的部分
}
return ret.toString();
}
/**
* 将20101202(101423)时间格式 获得年份
* @param DateString 时间格式:yyyyMMdd(HHmmss)
* @return
*/
public static String getYear(String DateString){
return DateString.substring(0,4);
}
/**
* 将20101202(101423)时间格式 获得月份
* @param DateString 时间格式:yyyyMMdd(HHmmss)
* @return
*/
public static String getMonth(String DateString){
return DateString.substring(4,6);
}
/**
* 将20101202时间格式 获得日期
* @param DateString 时间格式:yyyyMMdd
* @return
*/
public static String getDayNoTime(String DateString){
return DateString.substring(6);
}
/**
* 获取当前日期之前的日期,按天数向前推
* @param numVal
* @param dateFormat
* @return
* @author yup
* 2015-1-17
*/
public static String getBeforeDatePlusDay(int numVal, String dateFormat) {
Calendar calendar = Calendar.getInstance();
long currentTimeMillis = calendar.getTimeInMillis();
long hourInMillis = 60 * 60 * 1000;
long dVal = numVal * 24 * hourInMillis;
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
String currentDate = sdf.format(currentTimeMillis - dVal);
return currentDate;
}
/**
* 获取当前日期之前的日期,按天数向前推
* @param numVal
* @param dateFormat
* @return
* @author yup
* 2015-1-17
*/
public static String getAfterDatePlusDay(int numVal, String dateFormat) {
Calendar calendar = Calendar.getInstance();
long currentTimeMillis = calendar.getTimeInMillis();
long hourInMillis = 60 * 60 * 1000;
long dVal = numVal * 24 * hourInMillis;
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
String currentDate = sdf.format(currentTimeMillis + dVal);
return currentDate;
}
/**
* 获取当前日期之前的日期,按小时向前推
* @param numVal
* @param dateFormat
* @return
* @author yup
* 2015-1-17
*/
public static String getBeforeDatePlusHour(int numVal, String dateFormat) {
Calendar calendar = Calendar.getInstance();
long currentTimeMillis = calendar.getTimeInMillis();
long hourInMillis = 60 * 60 * 1000;
long dVal = numVal * hourInMillis;
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
String currentDate = sdf.format(currentTimeMillis - dVal);
return currentDate;
}
/**
* 获取当前日期之前的日期,按小时向前推
* @param numVal
* @param dateFormat
* @return
* @author yup
* 2015-1-17
*/
public static String getAfterDatePlusHour(int numVal, String dateFormat) {
Calendar calendar = Calendar.getInstance();
long currentTimeMillis = calendar.getTimeInMillis();
long hourInMillis = 60 * 60 * 1000;
long dVal = numVal * hourInMillis;
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
String currentDate = sdf.format(currentTimeMillis + dVal);
return currentDate;
}
/**
* 两个日期相差天数
* @param beginDate
* @param endDate
* @return
* @author yup
* 2015-1-18
*/
public static int daysBetween(Date beginDate, Date endDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(beginDate);
long time1 = cal.getTimeInMillis();
cal.setTime(endDate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 获取某月天数
* @param year
* @param month
* @return
* @author yup
* 2015-1-18
*/
public static int getMonthdays(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
return cal.getActualMaximum(Calendar.DATE);
}
/**
* 给时间加减年份
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusYear(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 给时间加减月份
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusMonth(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 给时间加减天数
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusDay(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 给时间加减小时
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusHour(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 给时间加减分钟
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusMinute(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 给时间加减秒
* @param date
* @param plusTime
* @return
* @author yup
* 2015-1-17
*/
public static Date getDatePlusSecond(Date date, int plusTime) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, plusTime);
Date d = cal.getTime();
return d;
}
/**
* 返回当前年
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentYear() {
Calendar calendar = Calendar.getInstance();
return calendar.get(1);
}
/**
* 返回当前月
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentMonth() {
Calendar calendar = Calendar.getInstance();
return calendar.get(2) + 1;
}
/**
* 返回当前天
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentDay() {
Calendar calendar = Calendar.getInstance();
return calendar.get(5);
}
/**
* 返回当前小时
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentHour() {
Calendar calendar = Calendar.getInstance();
return calendar.get(11);
}
/**
* 返回当前分钟
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentMinute() {
Calendar calendar = Calendar.getInstance();
return calendar.get(12);
}
/**
* 返回当前秒
* @return
* @author yup
* 2015-1-17
*/
public static int getCurrentSecond() {
Calendar calendar = Calendar.getInstance();
return calendar.get(13);
}
/**
* 返回当前年
* @return
* @author yup
* 2015-1-17
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(1);
}
/**
* 返回当前月
* @return
* @author yup
* 2015-1-17
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(2) + 1;
}
/**
* 返回当前天
* @return
* @author yup
* 2015-1-17
*/
public static int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(5);
}
/**
* 返回当前小时
* @return
* @author yup
* 2015-1-17
*/
public static int getHour(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(11);
}
/**
* 返回当前分钟
* @return
* @author yup
* 2015-1-17
*/
public static int getMinute(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(12);
}
/**
* 返回当前秒
* @return
* @author yup
* 2015-1-17
*/
public static int getSecond(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(13);
}
/**
*
* 毫秒数转化成时分秒
*
* 2017年6月28日下午9:52:04
* @param time
* @return
* @parameter
* String
*
*/
public static String converLongTimeToStr(long time) {
int ss = 1000;
int mi = ss * 60;
int hh = mi * 60;
long hour = (time) / hh;
long minute = (time - hour * hh) / mi;
long second = (time - hour * hh - minute * mi) / ss;
String strHour = hour < 10 ? "0" + hour : "" + hour;
String strMinute = minute < 10 ? "0" + minute : "" + minute;
String strSecond = second < 10 ? "0" + second : "" + second;
if (hour > 0) {
return strHour + ":" + strMinute + ":" + strSecond;
} else {
return strMinute + ":" + strSecond;
}
}
/**
* 两个时间相加减,返回相差的天数
*
* 2017年7月13日下午9:52:58
* @param date1
* @param date2
* @return
* @parameter
* long
*
*/
public static long addDay(String date1,String date2){
if(date2.indexOf("/")!=-1){
date2 = date2.replace(" ", "/");
String[] ss = date2.split("/");
date2 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3];
}
if(date1.indexOf("/")!=-1){
date1 = date1.replace(" ", "/");
String[] ss = date1.split("/");
date1 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3];
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
try {
long day1 = format.parse(date1).getTime();
long day2 = format.parse(date2).getTime();
day = (day1 - day2) / (1000 * 60 * 60 * 24);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return day;
}
/**
*
* 2017年7月18日下午11:03:10
* @param date1 时间参数 1:
* @param date2 时间参数 2:
* @return 相差天数
* @parameter
* long
* 两个时间之间相差距离多少天
*/
public static long[] addDayTime(String date1,String date2){
if(date2.indexOf("/")!=-1){
date2 = date2.replace(" ", "/");
String[] ss = date2.split("/");
date2 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3];
}
if(date1.indexOf("/")!=-1){
date1 = date1.replace(" ", "/");
String[] ss = date1.split("/");
date1 = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3];
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
one = df.parse(date1);
two = df.parse(date2);
long time1 = one.getTime();
long time2 = two.getTime();
long diff ;
if(time1<time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
} catch (ParseException e) {
e.printStackTrace();
}
long[] times = {day, hour, min, sec};
return times;
}
/**
* 两个时间相差距离多少天多少小时多少分多少秒
* @param str1 时间参数 1 格式:1990-01-01 12:00:00
* @param str2 时间参数 2 格式:2009-01-01 12:00:00
* @return String 返回值为:xx天xx小时xx分xx秒
*/
public static String getDistanceTime(String str1, String str2) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;
long hour = 0;
long min = 0;
long sec = 0;
try {
one = df.parse(str1);
two = df.parse(str2);
long time1 = one.getTime();
long time2 = two.getTime();
long diff ;
if(time1<time2) {
diff = time2 - time1;
} else {
diff = time1 - time2;
}
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
} catch (ParseException e) {
e.printStackTrace();
}
return day + "天" + hour + "小时" + min + "分" + sec + "秒";
}
/**
* 格式化时间 把 月/日/年 时:分:秒.000 格式化为yyyy-MM-dd hh:MM:ss.sss
*
* 2017年7月19日上午1:19:20
* @param time
* @return
* @parameter
* String
*
*/
public static String getFomatTime(String time){
if(time.indexOf("/")!=-1){
time = time.replace(" ", "/");
String[] ss = time.split("/");
time = ss[2]+"-"+ss[0]+"-"+ss[1]+" "+ss[3];
}
return time;
}
public static void main(String[] args) {
/* String s = getCurrentTimeNormal();
long a = addDay(s,"2017-07-13 11:56:37.523");
System.out.println(a);*/
String ss = "13/14/2017 11:23:34.194000";
String sss = getFomatTime(ss);
int i = sss.indexOf(" ");
String snew= sss.substring(i+1);
String snews= sss.substring(0,i);
System.out.println("---"+snews+"---");
System.out.println("---"+snew+"---");
}
}