时间获取及转换

来源:互联网 发布:iphone mac 蓝牙 编辑:程序博客网 时间:2024/05/29 07:41

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
* 日期工具类
*/

public class DateUtil {

/** * 日期格式常量类:yyyy-MM-dd */private static final String YYYY_MM_DD = "yyyy-MM-dd";/** * 日期格式常量类:yyyy-MM-dd HH:mm:ss */public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";private final SimpleDateFormat format;public DateUtil(SimpleDateFormat format) {    this.format = format;}public SimpleDateFormat getFormat() {    return format;}//紧凑型日期格式,也就是纯数字类型yyyyMMddpublic static final DateUtil COMPAT = new DateUtil(new SimpleDateFormat("yyyyMMdd"));//常用日期格式,yyyy-MM-ddpublic static final DateUtil COMMON = new DateUtil(new SimpleDateFormat("yyyy-MM-dd"));public static final DateUtil COMMON_FULL = new DateUtil(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));//使用斜线分隔的,西方多采用,yyyy/MM/ddpublic static final DateUtil SLASH = new DateUtil(new SimpleDateFormat("yyyy/MM/dd"));//中文日期格式常用,yyyy年MM月dd日public static final DateUtil CHINESE = new DateUtil(new SimpleDateFormat("yyyy年MM月dd日"));public static final DateUtil CHINESE_FULL = new DateUtil(new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"));/** * 日期获取字符串 */public String getDateText(Date date) {    return getFormat().format(date);}/** * 字符串获取日期 * * @throws ParseException */public Date getTextDate(String text) throws ParseException {    return getFormat().parse(text);}/** * 日期获取字符串 */public static String getDateText(Date date, String format) {    return new SimpleDateFormat(format).format(date);}/** * 字符串获取日期 * * @throws ParseException */public static Date getTextDate(String dateText, String format) throws ParseException {    return new SimpleDateFormat(format).parse(dateText);}/** * 根据日期,返回其星期数,周一为1,周日为7 * * @param date * @return */public static int getWeekDay(Date date) {    Calendar calendar = Calendar.getInstance();    calendar.setTime(date);    int w = calendar.get(Calendar.DAY_OF_WEEK);    int ret;    if (w == Calendar.SUNDAY)        ret = 7;    else        ret = w - 1;    return ret;}/** * 获取当天开始  LONG * @return */public static Long getStartTime(){    Calendar calendar = Calendar.getInstance();    calendar.set(Calendar.HOUR_OF_DAY, 0);    calendar.set(Calendar.MINUTE, 0);    calendar.set(Calendar.SECOND, 0);    calendar.set(Calendar.MILLISECOND, 0);    Date date=calendar.getTime();    return date.getTime();}/** * 获取当天结束  LONG * @return */public static Long getEndTime(){    Calendar calendar = Calendar.getInstance();    calendar.set(Calendar.HOUR_OF_DAY, 23);    calendar.set(Calendar.MINUTE, 59);    calendar.set(Calendar.SECOND, 59);    calendar.set(Calendar.MILLISECOND, 999);    Date date=calendar.getTime();    return date.getTime();}/** * 字串转化成日期 * * @param date 传入日期 * @param pattern 转换格式 * @return 转化结果 */public static Date strToDate(String date, String pattern) {    if (date == null || pattern == null){        return null;    }    SimpleDateFormat sdf = new SimpleDateFormat(pattern);    try {        return sdf.parse(date);    }    catch (ParseException e) {        throw new RuntimeException(e);    }}/** * 日期转化为字串 * * @param date 传入日期 * @param pattern 格式 * @return 转化结果 */public static String dateToStr(Date date, String pattern) {    if (date == null || pattern == null) {        return null;    }    SimpleDateFormat sdf = new SimpleDateFormat(pattern);    return sdf.format(date);}/** * 日期时间转化为字串yyyy-MM-dd HH:mm:SS * * @param date 传入日期 * @return 转化结果 */public static String dateTimeToStr(Date date) {    return dateToStr(date, YYYY_MM_DD_HH_MM_SS);}/** * 把日期转化成"yyyy-MM-dd"格式的字串 * * @param date 传入日期 * @return 转化结果 */public static String dateToStr(Date date) {    return dateToStr(date, YYYY_MM_DD);}/** * 把日期加天数 * * @param date 需要处理日期 * @param day 增加天数 * @return Date */public static Date addDay(Date date, int day) {    if (date == null) {        return null;    }    Calendar calendar = Calendar.getInstance();    calendar.setTime(date);    calendar.add(Calendar.DAY_OF_MONTH, day);    return calendar.getTime();}/** * 把日期转成日期想要的格式 * * @param date 传入日期 * @param pattern 日期格式 * @return 转化结果 */public static Date dateToDatePattern(Date date, String pattern) {    String dateStr = dateToStr(date, pattern);    return strToDate(dateStr, pattern);}/** * 返回两个日期之间的天数差 * * @param d1 第一个日期 * @param d2 第二个日期 * @return 两个日期之间相差天数 */public static int dateDiff(Date d1, Date d2) {    if (d1 == null || d2 == null) {        throw new RuntimeException("dateDiff方法两个参数不能为null!");    }    d1 = setTime(d1, 0, 0, 0);    d2 = setTime(d2, 0, 0, 0);    Long diff = (d1.getTime() - d2.getTime()) / 1000 / 60 / 60 / 24;    return diff.intValue();}/** * 设置日期格式的时间部分包含:时、分、秒;如果某部分为负数,不修改此部分 * * @param date 日期 * @param hour 时 * @param minute 分 * @param second 秒 * @return 设置结果 */public static Date setTime(Date date, int hour, int minute, int second) {    Calendar cal = Calendar.getInstance();    cal.setTime(date);    if (hour >= 0) {        cal.set(Calendar.HOUR_OF_DAY, hour);    }    if (minute >= 0) {        cal.set(Calendar.MINUTE, minute);    }    if (second >= 0) {        cal.set(Calendar.SECOND, second);    }    return cal.getTime();}/** * 把毫秒转化成日期 * * @param dateFormat 要转换的日期 * @param millSec 毫秒数 * @return 转换后的日期 */public static String transferLongToDate(String dateFormat, Long millSec) {    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);    Date date = new Date(millSec);    return sdf.format(date);}/** * 把日期加天数,返回结果 * * @param date 日期 * @param day 增加天数 * @return 新日期 */public static Long addDay(Long date, int day) {    if (date == null) {        return null;    }    Date realDate = addDay(toRealDate(date), day);    return toLongDate(realDate);}/** * 把长整形日期转换成真实日期 20150102030405 2015年1月2日3时4分5秒 * * @param date  数字型日期 * @return 日期类型 */public static Date toRealDate(Long date) {    if (date == null){        return null;    }    Calendar calendar = Calendar.getInstance();    int year = (int) (date / 10000000000l);    calendar.set(Calendar.YEAR, year);    int month = (int) ((date % 10000000000l) / 100000000);    calendar.set(Calendar.MONTH, month - 1);    int day = (int) ((date % 100000000) / 1000000);    calendar.set(Calendar.DAY_OF_MONTH, day);    int hour = (int) ((date % 1000000) / 10000);    calendar.set(Calendar.HOUR_OF_DAY, hour);    int minute = (int) ((date % 10000) / 100);    calendar.set(Calendar.MINUTE, minute);    int second = (int) (date % 100);    calendar.set(Calendar.SECOND, second);    return calendar.getTime();}/** * Date类型转换成Long型日期 * * @param date 日期 * @return 转换后的格式 */public static Long toLongDate(Date date) {    if (date == null) {        return null;    }    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");    return Long.valueOf(sdf.format(date));}/** * 判断时间是否在当天 * @param date * @return */public static boolean isToday(Date date){    SimpleDateFormat fmt=new SimpleDateFormat("yyyy-MM-dd");    if(fmt.format(date).toString().equals(fmt.format(new Date()).toString())){//格式化为相同格式        return true;    }else {        return false;    }}

}

原创粉丝点击