时间获取及转换

版权声明:博客原创,转载须标明出处 https://blog.csdn.net/qq_24232123/article/details/77164557

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;
}

//紧凑型日期格式,也就是纯数字类型yyyyMMdd
public static final DateUtil COMPAT = new DateUtil(new SimpleDateFormat("yyyyMMdd"));

//常用日期格式,yyyy-MM-dd
public 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/dd
public 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;
    }
}

}

猜你喜欢

转载自blog.csdn.net/qq_24232123/article/details/77164557