package com.yuncai.core.tools;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DateTools {
public final static String[] week = { "", "周日", "周一", "周二", "周三", "周四", "周五", "周六" };
public final static String[] week2 = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
public static java.text.SimpleDateFormat SDF_YYMMDD = new java.text.SimpleDateFormat("yyyy-MM-dd");
public static java.text.SimpleDateFormat SDF_YYYY_MM_DD_HH_MM_SS = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static Date StringToDate(String dateString, String format) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static String StringToDate_YYYY_MM_DD(Date date) {
String dates = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
dates = sdf.format(date);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return dates;
}
public static String StringToDate_MM_DD(Date date) {
String dates = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
dates = sdf.format(date);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return dates;
}
public static Date StringToDate(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringtoDateHHMM(String dateString){
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringToDatetpy(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
date = sdf.parse(dateString);
System.out.println(date);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringToDate_YYYY_MM_DD_HH_MM(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringToDate_YYYYMMDDHHMM(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringToDate_YY_MM_DD_HH_MM(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date StringToDate_YYYY_MM_DD_HH_MM_SS(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static Date stringToDate(String dateString, String format) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static String dateToString(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
public static Date StringToDateShort(String dateString) {
Date date;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
date = sdf.parse(dateString);
} catch (Exception e) {
date = null;
LogUtil.out(e);
}
return date;
}
public static String dateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public static String getByTimeMillis(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return dateToString(c.getTime());
}
public static long getTimeMillis(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date = DateTools.StringToDate(dateTime);
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
public static String getNowDateYYYYMMDD() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(date);
}
public static String getNowDate(String format) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
public static String getNowDateYYMMDD() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
return sdf.format(date);
}
public static String getNowDateYYYYMM(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
return sdf.format(date);
}
public static String getNowDateYYYY_MM_DD() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
public static String getNowDateYYYY_MM_DD_HH_MM() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
return sdf.format(date);
}
public static String getNowDateYYYY_MM_DD_HH_MM_SS() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public static String getNowDateYYYYMMDDHHMMSS() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.format(date);
}
public static String getNowDateYYYYMMDDHHMMSSSS() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
return sdf.format(date);
}
public static Integer handleIntTime(Date date, String weekDayName) {
for (int i = 0; i <= 3; i++) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -i);
int day = cal.get(Calendar.DAY_OF_WEEK);
String tempWeek = week[day];
if (tempWeek.equals(weekDayName))
return Integer.valueOf(dateToString(cal.getTime(), "yyyyMMdd"));
}
return null;
}
public static String getWeekStr2(Date date,String[] week) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week[cal.get(Calendar.DAY_OF_WEEK)];
}
public static String getWeekStr(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week[cal.get(Calendar.DAY_OF_WEEK)];
}
public static Date strToDateDafueYear(String dateStr,Date date) {
Date nowDate=new Date();
String nowYear=DateTools.dateToString(nowDate,"yyyy");
Date matchDate = DateTools.StringToDate(nowYear+"-"+dateStr, "yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
calendar.setTime(matchDate);
Calendar now = Calendar.getInstance();
//有参考值使用参考值的年份
if(date!=null){
now.setTime(date);
calendar.set(Calendar.YEAR, now.get(Calendar.YEAR));
}else{
//排除1月份获取同年12月份时间&12月份获取同年1月份时间
if(calendar.getTimeInMillis()
calendar.set(Calendar.YEAR, now.get(Calendar.YEAR)+1);
}else if(calendar.getTimeInMillis()>now.getTimeInMillis()&&calendar.get(Calendar.MONTH)==11&&now.get(Calendar.MONTH)==0){
calendar.set(Calendar.YEAR, now.get(Calendar.YEAR)-1);
}
}
return calendar.getTime();
}
public static Date strToDateDafueYear(String dateStr) {
return strToDateDafueYear(dateStr,null);
}
public static Date getDateByOffsetDay(Date date, int offset) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, offset);
return cal.getTime();
}
public static boolean isDateBefore(String date2, Date date1) {
try {
DateFormat df = DateFormat.getDateTimeInstance();
return date1.before(df.parse(date2));
} catch (ParseException e) {
System.out.print(e.getMessage());
return false;
}
}
public static boolean isIndexDCDateBefore(Date date){
try {
Calendar c = Calendar.getInstance();
GregorianCalendar ca = new GregorianCalendar();
if(ca.get(GregorianCalendar.AM_PM) == 1)//判断上下午时间
c.set(Calendar.HOUR, -2);
else
c.set(Calendar.HOUR, +10);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MINUTE, 0);
Date afterTime=c.getTime();//当天10时后
return afterTime.before(date);
} catch (Exception e) {
System.out.print(e.getMessage());
return false;
}
}
public static boolean isIndexDCDateAfter(Date date){
try {
Calendar c = Calendar.getInstance();
GregorianCalendar ca = new GregorianCalendar();
if(ca.get(GregorianCalendar.AM_PM) == 1)//判断上下午时间
c.set(Calendar.HOUR, +22);
else
c.set(Calendar.HOUR, +34);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MINUTE, 0);
Date beforeTime=c.getTime();//明天10时前
return beforeTime.after(date);
} catch (Exception e) {
System.out.print(e.getMessage());
return false;
}
}
public static Date GetDCMatchEndTime(Date matchTime, int aheadMilli) {
if(matchTime == null) return null;
Calendar matchCal = Calendar.getInstance();
matchCal.setTime(matchTime);
Calendar stopPlayTicketCal = (Calendar) matchCal.clone();
stopPlayTicketCal.set(Calendar.HOUR_OF_DAY, 4);
stopPlayTicketCal.set(Calendar.MINUTE, 50);
stopPlayTicketCal.set(Calendar.SECOND, 0);
//欧洲杯延长销售时间 9点开始至次日凌晨6点
Date euroCupStart = DateTools.StringToDate("2012-06-08 9:00:00") ;
Date euroCupEnd = DateTools.StringToDate("2012-07-03 06:00:00");
if(matchTime.getTime()>euroCupStart.getTime()&&matchTime.getTime()
stopPlayTicketCal.set(Calendar.HOUR_OF_DAY, 5);
}
stopPlayTicketCal.add(Calendar.MILLISECOND, -aheadMilli);
Calendar startPlayTicketCal = (Calendar) matchCal.clone();
startPlayTicketCal.set(Calendar.HOUR_OF_DAY, 9);
startPlayTicketCal.set(Calendar.MINUTE, 0);
startPlayTicketCal.set(Calendar.SECOND, 0);
Calendar weStartPlayTicketCal = (Calendar) startPlayTicketCal.clone();
weStartPlayTicketCal.add(Calendar.MILLISECOND, +aheadMilli);
// if(matchCal.after(stopPlayTicketCal)&&(matchCal.before(startPlayTicketCal)||matchCal.equals(startPlayTicketCal))){
//
// //(4:50-aheadMilli)——(9:00) 都设置成为(4:50-aheadMilli)
// return stopPlayTicketCal.getTime();
// }else
// if(matchCal.after(startPlayTicketCal)&&matchCal.before(weStartPlayTicketCal)){
// //(9:00)——(9:00+aheadMilli) 都设置 (4:50-aheadMilli)+offset
// int offset=(int)
// (weStartPlayTicketCal.getTimeInMillis()-matchCal.getTimeInMillis());
// stopPlayTicketCal.add(Calendar.MILLISECOND, +offset);
// return stopPlayTicketCal.getTime();
if (matchCal.after(stopPlayTicketCal) && matchCal.before(weStartPlayTicketCal)) {
// (4:50-aheadMilli)——(9:00+aheadMilli) 都设置 (4:50-aheadMilli)
return stopPlayTicketCal.getTime();
} else {
matchCal.add(Calendar.MILLISECOND, -aheadMilli);
return matchCal.getTime();
}
}
public static String getMinutes (Date times){
long time = new Date().getTime() - times.getTime();//time 单位是 毫秒
String res = null;
//转化成天数
//先判断是不是小于 60 * 60 * 1000 也就是 小于1小时,那么显示 : **分钟前
if(time < 60 * 60 * 1000){
res = (time / 1000 / 60 ) + "分钟前";
}
//如果大于等于1小时 小于等于一天,那么显示 : **小时前
else if(time >= 60 * 60 * 1000 && time < 24 * 60 * 60 * 1000){
res = (time / 1000 / 60 / 60 ) + "小时前";
}
//如果大于等于1小时 小于等于一天,那么显示 : **小时前
else if(time >= 24 * 60 * 60 * 1000){
res = (time / 1000 / 60 / 60 /24 ) + "天前";
}
//如果时间不明确或者发帖不足一分钟 ,则不显示
else{
res = "";
}
return res;
}
public static String getNMonthBeforeCurrentDay(int n) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -n);
return "" + c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.DATE);
}
public static List getAllBeforeDateToAfterDateSpace(String string, String string2) {
List date = null;
try {
date = new ArrayList();
Date dateTemp = new SimpleDateFormat("yyyy-MM-dd").parse(string);
Date dateTemp2 = new SimpleDateFormat("yyyy-MM-dd").parse(string2);
Calendar calendarTemp = Calendar.getInstance();
calendarTemp.setTime(dateTemp);
while (calendarTemp.getTime().getTime()!= dateTemp2.getTime()) {
date.add(new SimpleDateFormat("yyyy-MM-dd").format(calendarTemp.getTime()));
calendarTemp.add(Calendar.DAY_OF_YEAR, 1);
}
date.add(string2);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static String getYesterDay(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,-1);
return new SimpleDateFormat("yyyyMMdd").format(cal.getTime());
}
public static String getTwoDay(Date startDate, Date endDate) {
long day = 0;
try {
day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day+"";
}
public static void main(String args[]) {
String dateStr1 = "2011-07-03 4:50:00";
String dateStr2 = "2012-07-03 5:15:00";
String dateStr3 = "2012-07-03 6:15:00";
String dateStr4 = "2012-07-03 7:15:00";
String dateStr5 = "2012-07-03 8:15:00";
//String dateStr6= "2012-06-09 9:00:00";
String dateStr6 = "2012-07-03 9:16:00";
String dateStr7 = "2012-07-03 10:15:00";
String format = "yyyy-MM-dd HH:mm:ss";
Date date = stringToDate(dateStr1, format);
Date handleDate = GetDCMatchEndTime(date, 1200000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr2, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr3, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr4, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr5, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr6, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
date = stringToDate(dateStr7, format);
handleDate = GetDCMatchEndTime(date, 600000);
System.out.println(dateToString(handleDate));
//String dateText="12-30 02:30";
//System.out.println(DateTools.dateToString(strToDateDafueYear(dateText,new Date())));
}
public static boolean isBetween(Date startTime,Date endTime,Date checkTime){
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
Calendar cal3 = Calendar.getInstance();
cal1.setTime(checkTime);
cal2.setTime(startTime);
cal3.setTime(endTime);
if(cal2.before(cal1)&& cal3.after(cal1)){
return true;
}
return false;
}
//根据日期取得星期几
public static String getWeek(Date date){
String[] weeks = {"周日","周一","周二","周三","周四","周五","周六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0){
week_index = 0;
}
return weeks[week_index];
}
public static Date jiaOrJian(Date date,int num){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE,num);
return cal.getTime();
}
public static Date toDate(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date=null;
try {
date=sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}