java中日期的常用转换方法

java开发过程中通常用到的一些日期转换方法

都是自己实际工作中遇到的,总结了一下

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.springframework.expression.ParseException;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.springframework.expression.ParseException;

public class DateUtil {

    /**
     * 默认日期格式
     */
    private static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * <字符串转换成日期> <如果转换格式为空,则利用默认格式进行转换操作>
     * 
     * @param str
     *            字符串
     * @param format
     *            日期格式
     * @return 日期
     * @see [类、类#方法、类#成员]
     */
    public static Date str2Date(String str, String format) {
        if (null == str || "".equals(str)) {
            return null;
        }
        // 如果没有指定字符串转换的格式,则用默认格式进行转换
        if (null == format || "".equals(format)) {
            format = DEFAULT_FORMAT;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date date = null;
        try {
            try {
                date = sdf.parse(str);
            } catch (java.text.ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return date;
        } catch (ParseException e) {
        }

        return null;
    }

    /**
     * <一句话功能简述> <功能详细描述>
     * 
     * @param date
     *            日期
     * @param format
     *            日期格式
     * @return 字符串
     * @see [类、类#方法、类#成员]
     */
    public static String date2Str(Date date, String format) {
        if (null == date) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     * <时间戳转换为字符串> <功能详细描述>
     * 
     * @param time
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static String timestamp2Str(Timestamp time) {
        Date date = new Date(time.getTime());
        return date2Str(date, DEFAULT_FORMAT);
    }

    /**
     * <时间戳转换为字符串> <功能详细描述>
     * 
     * @param time
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static String timestamp2Str(Timestamp time,String format) {
        Date date = new Date(time.getTime());
        return date2Str(date, format);
    }

    /**
     * <时间戳转换为字符串> <功能详细描述>
     * 
     * @param time
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static Date timestamp2Date(Timestamp time) {
        Date date = new Date(time.getTime());
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT);
        try {
            return sdf.parse(date2Str(date, DEFAULT_FORMAT));
        } catch (java.text.ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * <一句话功能简述> <功能详细描述>
     * 
     * @param str
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static Timestamp str2Timestamp(String str) {
        Date date = str2Date(str, DEFAULT_FORMAT);
        return new Timestamp(date.getTime());
    }

    /**
     * <一句话功能简述> <功能详细描述>
     * 
     * @param str
     * @return
     * @see [类、类#方法、类#成员]
     */
    public static Timestamp str2Timestamp(String str,String format) {
        Date date = str2Date(str, format);
        return new Timestamp(date.getTime());
    }

    /**
     * 获取当前时间
     * 
     * @return
     */
    public static Timestamp getCurrentTimestamp() {
        return str2Timestamp(date2Str(new Date(), DEFAULT_FORMAT));
    }

    public static Integer getTimeInterval(Timestamp start, Timestamp end) {
        Long resultL = (end.getTime() - start.getTime()) / (1000 * 60);
        return resultL.intValue();
    }

    /**
     * 相差天数
     * @param start
     * @param end
     * @return
     */
    public static int getDateInterval(Date start,Date end){
        Timestamp ks = convertDate2FirstSecond(start);
        Timestamp js = convertDate2FirstSecond(end);
        long day = (js.getTime() - ks.getTime()) / (1000 * 60 * 60 * 24);
        return (int)day;
    }

    /**
      * 计算当前日期到某一天之间的天数
      * @return
      * @throws ParseException
      */
    public static long getIntervalDays(String str){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date start = null;
        try {
            start = sdf.parse(str);
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }

        java.util.Date date=new java.util.Date();
        long time1=date.getTime();
        long time2=start.getTime();
        return (time1-time2)/(1000*3600*24);
    }
    /**
     * 获取 从当日零时开始累积毫秒数
     * @return
     */
    public static long getMilliSeconds(){
        long now = System.currentTimeMillis();
        SimpleDateFormat sdfOne = new SimpleDateFormat("yyyy-MM-dd");
        long overTime = 0;
        try {
            overTime = (now - (sdfOne.parse(sdfOne.format(now)).getTime()));
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return overTime;
    }

    /**
     * 相差月数
     * @return
     */
    public static int getMonthInterval(Date start,Date end){
        Calendar ks = Calendar.getInstance();
        ks.setTime(start);
        Calendar js = Calendar.getInstance();
        js.setTime(end);

        int ksYear = ks.get(Calendar.YEAR);
        int ksMonth = ks.get(Calendar.MONTH);

        int jsYear = js.get(Calendar.YEAR);
        int jsMonth = js.get(Calendar.MONTH);

        if(ksYear == jsYear){
            return jsMonth - ksMonth + 1;
        }
        ksMonth++;
        jsMonth++;

        return jsMonth + (12 - ksMonth + 1);

    }

    /**
     * 返回当前日期
     * 
     * @return
     */
    public static Date getCurrentYYR() {
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        month++;
        String date = year + "-" + month + "-" + day + " " + "00:00:00";
        return str2Date(date, DEFAULT_FORMAT);
    }

    public static Timestamp convertDate2FirstSecond(Date date) {
        String dateStr = date2Str(date, "yyyy-MM-dd");
        dateStr = dateStr + " 00:00:00";
        return str2Timestamp(dateStr);
    }

    public static Timestamp convertDate2LastSecond(Date date) {
        if(date == null) return null;
        String dateStr = date2Str(date, "yyyy-MM-dd");
        dateStr = dateStr + " 23:59:59";
        return str2Timestamp(dateStr);
    }
    public static Timestamp convertDate2FirstSecondYear(Date date) {
        String dateStr = date2Str(date, "yyyy");
        dateStr = dateStr + "-1-1 00:00:00";
        return str2Timestamp(dateStr);
    }

    public static Timestamp convertDate2LastSecondYear(Date date) {
        if(date == null) return null;
        String dateStr = date2Str(date, "yyyy");
        dateStr = dateStr + "-12-31 23:59:59";
        return str2Timestamp(dateStr);
    }
    public static Timestamp convertDate2FirstSecondMonth(Date date) {
        String dateStr = date2Str(date, "yyyy-MM");
        dateStr = dateStr + "-1 00:00:00";
        return str2Timestamp(dateStr);
    }

    public static Timestamp convertDate2LastSecondMonth(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        if(date == null) return null;
        String dateStr = date2Str(date, "yyyy-MM");
        dateStr = dateStr + "-"+c.getActualMaximum(Calendar.DAY_OF_MONTH)+" 23:59:59";
        return str2Timestamp(dateStr);
    }

    public static Date dateAddOneDay(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_MONTH, 1);
        return c.getTime();
    }

    public static Date dateSubtractOneDay(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_MONTH, -1);
        return c.getTime();
    }

    /**
     * 13:55 转化为 2016-06-17 13:55:00
     * @param time
     * @return
     */
    public static Timestamp convertSF2Time(String date,String time){
        String dateTime = date + " " + time + ":00";
        return str2Timestamp(dateTime);
    }

    /**
     * 获取下一个凌晨
     * @return
     */
    public static Timestamp getNext00(){
        Date date = getCurrentYYR();
        date = dateAddOneDay(date);
        return new Timestamp(date.getTime());

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值