package com.alphabet.xjerpplus.carmaintaince.CalendarUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* 日期工具类
*/
public class CalendarUtil {
public static Long getYYMMDD(Date date) {
SimpleDateFormat df = new SimpleDateFormat("yyMMdd");
return Long.valueOf(df.format(date));
}
public static Long getMM(Date date) {
SimpleDateFormat df = new SimpleDateFormat("MM");
return Long.valueOf(df.format(date));
}
public static Long getYY(Date date) {
SimpleDateFormat df = new SimpleDateFormat("yy");
return Long.valueOf(df.format(date));
}
public static String getDayOfYMshort() {
SimpleDateFormat df = new SimpleDateFormat("yyMM");
return df.format(new Date());
}
/**
* 将日期格式化为指定格式
*
* @param pattern
* @param date
* @return
*/
public static String formatDate(String pattern, Date date) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.format(date);
}
/**
* 获得两个时间段间的时间 (yyyy 和yyyyMM和yyyym 月份,季度,年份)
*
* @param strartDate
* @param endDate
* @return
*/
public static List<String> getDateList(String start, String end) {
List<String> dateList = new ArrayList<String>();
String format = null;
Integer field = null;
int len = start.length();
switch (len) {
case 4:
format = "yyyy";
field = Calendar.YEAR;
break;
case 5:
start = seasonToMonth(start, true);
end = seasonToMonth(end, false);
format = "yyMM";
field = Calendar.MONTH;
break;
case 6:
format = "yyyyMM";
field = Calendar.MONTH;
break;
case 8:
format = "yyyyMMdd";
field = Calendar.DAY_OF_YEAR;
break;
case 7:
format = "yyyy-MM";
field = Calendar.MONTH;
break;
case 10:
format = "yyyy-MM-dd";
field = Calendar.DAY_OF_YEAR;
break;
default:
break;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
Calendar calendar = Calendar.getInstance();
try {
Date s = sdf.parse(start);
Date e = sdf.parse(end);
calendar.setTime(s);
while (s.compareTo(e) < 1) {
String formatter = sdf.format(s);
if (len == 5) {
formatter = getSeasonDate(formatter);
calendar.add(field, 2);
}
calendar.add(field, 1);
s = calendar.getTime();
dateList.add(formatter);
}
} catch (ParseException e1) {
}
return dateList;
}
/**
* 将字符串日期转为Calendar
*
* @param pattern
* @param date
* @return
*/
public static Calendar formatStr(String pattern, String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Date dt = sdf.parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
return cal;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取当前时间精确到毫秒
*
* @return String
*/
public static String getCurrentTimeString() {
return new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
}
/**
* 获取当前时间yyyy-MM-dd HH:mm:ss
*
* @return String
*/
public static String getNowTimeString() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}
/**
* 将date转化为字符串yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String covertDateToString(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
/**
* 将字符串转化为date yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
* @throws ParseException
*/
public static Date covertStringToDate(String dateStr) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(dateStr);
}
/**
* 取得季度月
*
* @param date
* @return
*/
public static String getSeasonDate(String date) {
Calendar c = formatStr("yyMM", date);
int year = c.get(Calendar.YEAR);
int nSeason = c.get(Calendar.MONTH) / 3 + 1;
return year + "" + nSeason;
}
/**
* 获取当前时间的前N个工作日的时间
*
* @param intervalDay
* @return
*/
public static Date getStartDutyDate(int intervalDay) {
Date date = new Date();// 当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, -intervalDay);
return calendar.getTime();
}
/**
* 获取当前时间的后N个工作日的时间
*
* @param intervalDay
* @return
*/
public static Date getDutyDate(int intervalDay) {
Date date = new Date();// 当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, intervalDay);
return calendar.getTime();
}
/**
*
* @param dateStr
* @return
* @throws ParseException
*/
public static long getDaysFromNow(Date date) throws ParseException {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
long time1 = cal.getTimeInMillis();
cal.setTime(new Date());
long time2 = cal.getTimeInMillis();
return (time2 - time1) / (1000 * 3600 * 24);
}
/**
* 时间格式的字符串转成整形
*
* @param date
* @return
*/
public static final String stringDateToNumber(String date) {
return date.replaceAll("-", "").substring(2);
}
/**
* 季度转换成月
*
* @param date
* @param start
* @return
*/
public static final String seasonToMonth(String date, boolean start) {
int i = date.length() - 1;
int k = Integer.valueOf(date.substring(i));
int month = 3 * k;
if (start) {
month -= 2;
}
return date.substring(2, i) + (month > 9 ? "" : "0") + month;
}
/**
* 获取格式化年月日
* @param date
* @return
*/
public static final int getFmtNYR(String date) {
String tmp = date.replaceAll("-", "");
tmp = tmp.substring(2);
return Integer.parseInt(tmp);
}
/**
* 得到几天后的时间
* @param d 日期
* @param day 日期差
* @return 字符串日期
*/
public static String getDateBefore(Date d, int day) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar now = Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
return df.format(now.getTime());
}
}
时间工具类
最新推荐文章于 2024-09-08 12:41:07 发布