本类是一个日期时间格式转换工具类类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang8882554/article/details/79965923

/**
 * 本类是一个日期时间格式转换工具类类,给大家做一个参考
 * Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转
 * Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法

 * 参考了部分网络代码https://www.cnblogs.com/exmyth/p/6425878.html

* @author 张永志  1279938986@qq.com

 */
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class Transform {
    /**
     * Obtains an instance of Date from an Instant object.
     */
    
    public static Date from(Instant instant) {
        try {
            return new Date(instant.toEpochMilli());
        } catch (ArithmeticException ex) {
            throw new IllegalArgumentException(ex);
        }
    }

    // Converts this Date object to an Instant.
    public  static  Instant toInstant(Date date) {
        return Instant.ofEpochMilli(date.getTime());
    }
    
    /**
     *
    // 01. java.util.Date --> java.time.LocalDateTime
     * 这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,
     * 然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),
     * 新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:
     * @param date
     * @return
     */
    public  static  LocalDateTime  UDateToLocalDateTime(java.util.Date date) {
        
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(instant, zone);
    }

    /**
     *  02. java.util.Date --> java.time.LocalDate
     * @param date
     * @return
     */
    public  static  LocalDate UDateToLocalDate( java.util.Date date) {
       
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        return localDateTime.toLocalDate();
    }

    /**
     *  java.util.Date --> java.time.LocalTime
     * @param date
     * @return
     */
    public   static  LocalTime  UDateToLocalTime( java.util.Date date ) {
       
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        return localDateTime.toLocalTime();
    }


    /**
     * java.time.LocalDateTime --> java.util.Date
     * @param localDateTime
     * @return
     */
    public  static  Date LocalDateTimeToUdate(LocalDateTime localDateTime ) {
        //LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        return  Date.from(instant);
    }


    /**
     * java.time.LocalDate --> java.util.Date
     * @param localDate
     * @return
     */
    public static   Date LocalDateToUdate(LocalDate localDate) {
        //LocalDate localDate = LocalDate.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        return  Date.from(instant);
    }

    /*
     *  java.time.LocalTime --> java.util.Date
     */
    public static  Date LocalTimeToUdate(LocalTime localTime) {
       // LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        //java.util.Date date = Date.from(instant);
        return Date.from(instant);
    }
    /*
     *  String ->LocalDateTime
     */
    public static String LocalDateTimetoString(LocalDateTime ldt){
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //LocalDateTime time = LocalDateTime.now();
        return df.format(ldt);
        
        //LocalDateTime ldt = LocalDateTime.parse("2017-09-28 17:07:05",df);
        //System.out.println("LocalDateTime转成String类型的时间:"+localTime);
        //System.out.println("String类型的时间转成LocalDateTime:"+ldt);
        //return null;
    }
    /**
     *08.LocalDateTime->String
     *
     * @param dateTime  时间字符串格式必须是:yyyy-MM-dd HH:mm:ss模式
     * 也可以根据自己的需求修改DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
     * @return
     */
    
    public static LocalDateTime StringToLocalDateTime(String dateTime){
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return LocalDateTime.parse(dateTime,df);        
        
    }
    /**
     * 09.Date->String
     *String =(new SimpleDateFormat("格式")).format(Date);
     * @return
     */
    public static String DateToString(Date date){
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");  
         SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日");  
        return format1.format(date);
        
    }
    /** 10.  String->Date
     *   Date = (new SimpleDateFormat("格式")).parse(String);
     */
    public static Date StringToDate(String dateString){
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return format1.parse(dateString);
        } catch (ParseException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        return null;

    }

/**
     *
        * @Title: sqlDateToUtilDate
        * @Description: java.sql.date->java.util.date
        * @param @param date
        * @param @return    参数
        * @return java.util.Date    返回类型
        * @throws
     */

    public static java.util.Date sqlDateToUtilDate(java.sql.Date date){        
        return new java.sql.Date(date.getTime());
    }
/**
 *
    * @Title: utilDateToSqlDate
    * @Description: java.util.date->java.sql.date
    * @param @param date
    * @param @return    参数
    * @return java.sql.Date    返回类型
    * @throws
 */
    public static  java.sql.Date    utilDateToSqlDate(java.util.Date date){
        return new java.sql.Date(date.getTime());
    }


    //测试
    public static void main(String[] args) {
        System.out.println(StringToDate("2018-04-16"));
        System.out.println(DateToString(new Date()));
        LocalDateTime ldt=StringToLocalDateTime("2018-04-17 16:30:30");
        System.out.println(ldt);
        System.out.println(LocalDateTimetoString(ldt));
    }
}

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页