java中常用的日期工具类
日期相关的类:
package net.yto.ofclacct.core.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import org.joda.time.DateTime;
import net.ytoframework.kernel.common.util.DateUtil;
/**
* <pre>
* 名称: DateUtils
* 描述: 日期工具类
* </pre>
* @author sxy
*/
public class DateUtils {
//private static final Log logger = LogFactory.getLog(DateUtils.class);
public static final String YYYYMMDD = "yyyy-MM-dd";
public static final String YYYYMMDD_ZH = "yyyy年MM月dd日";
public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY; // 中国周一是一周的第一天
/**
* 默认时间格式:yyyy-MM-dd HH:mm:ss
*/
public static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/** 周一 */
public static final int FIRST_OF_WEEK = 1;
/** 周二 */
public static final int SECOND_OF_WEEK = 2;
/** 周三 */
public static final int THIRD_OF_WEEK = 3;
/** 周四 */
public static final int FOURTH_OF_WEEK = 4;
/** 周五 */
public static final int FIFTH_OF_WEEK = 5;
/** 周六 */
public static final int SIXTH_OF_WEEK = 6;
/** 周日 */
public static final int SEVENTH_OF_WEEK = 7;
/**
* 将多种字符串格式 解析为Date
*
*/
public static Date parseDate(String inputDate) {
Date outputDate = null;
String[] possibleDateFormats =
{
“yyyy/MM/dd HH:mm:ss”,
“yyyy/MM/dd HH:mm”,
“yyyy/MM/dd”,
“yyyy-MM-dd HH:mm:ss”,
“yyyy-MM-dd HH:mm”,
“yyyy-MM-dd”,
“HH:mm:ss”,
“HH:mm”
};
try {
outputDate = org.apache.commons.lang3.time.DateUtils.parseDate(inputDate, possibleDateFormats);
} catch (ParseException e) {
e.printStackTrace();
}
return outputDate;
}
/**
* 星期一转换为周一
*
*/
public static String transWeek(final String day) {
return day.replace("星期", "周");
}
/**
* 年月日转换为星期
*
*/
public static String getWeek(final String dateStr,final String pattern) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
Date date = null;
try {
date = df.parse(dateStr);
} catch (ParseException e) {
//log.info("SimpleDateFormat解析时间出错");
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return new SimpleDateFormat("E",Locale.CHINESE).format(c.getTime());
}
/**
* 通过日期字符串yyyy-MM-dd HH:mm:ss 获取星期
*
* @param datestr 日期字符串
* @return 星期
* @throws Exception
*/
public static String getWeekday(final String datestr,final String pattern) throws Exception{
try {
SimpleDateFormat df = new SimpleDateFormat(pattern);
Date date = df.parse(datestr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int weakNum = cal.get(Calendar.DAY_OF_WEEK)-1;
switch (weakNum) {
case FIRST_OF_WEEK:
return "周一";
case SECOND_OF_WEEK:
return "周二";
case THIRD_OF_WEEK:
return "周三";
case FOURTH_OF_WEEK:
return "周四";
case FIFTH_OF_WEEK:
return "周五";
case SIXTH_OF_WEEK:
return "周六";
default:
return "周日";
}
} catch (Exception ex) {
throw ex;
}
}
/**
*Date转换为String
*指定日期格式
*如: "HH:mm"
*/
/**
*String转换为Date
*
*/
public static Date stringToDate(final String dateStr,final String pattern) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
Date date = null;
try {
date = df.parse(dateStr);
} catch (ParseException e) {
//log.info("SimpleDateFormat解析时间出错");
e.printStackTrace();
}
return date;
}
/**
*比较日期大小
*指定日期格式
*/
/**
* 根据日期取得对应周周日日期
*
* @param date
* @return
*/
public static Date getSundayOfWeek(Date date) {
Calendar sunday = Calendar.getInstance();
sunday.setTime(date);
sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return sunday.getTime();
}
/**
* 获取中文前天,昨天,今天,明天,和后天
* @param datestr
* @param pattern
* @return
* @throws Exception
*/
public static String getChineseDay(final String datestr,final String pattern) {
Date date = DateUtil.toDate(datestr, pattern);
int offSet = Calendar.getInstance().getTimeZone().getRawOffset();
long today = (System.currentTimeMillis()+offSet)/86400000;//1天折算成毫秒数
long start = (date.getTime()+offSet)/86400000;
int chineseDayNum = (int)(start - today);
switch (chineseDayNum) {
case -2:
return "前天";
case -1:
return "昨天";
case 0:
return "今天";
case 1:
return "明天";
case 2:
return "后天";
default:
return "";
}
}
}