java8中的date和joda time中的日期相互转换

一.Joda-Time 

相对于jdk1.8之前,计算日期有多繁琐,而且simpleDateFormat 是线程不安全的同时没有时区的概念;

//获取本地时间 年月日
LocalDate localDate = LocalDate.now(); //2018-11-23

// 获取明年的明天明日 日期的增加
LocalDate featureYear = localDate1.plusYears(1).plusMonths(1).plusDays(1);
2019-12-24


// 获取出年时间 
 LocalDate featureYear = localDate1.minusYears(1).minusMonths(1).minusDays(1); //2017-10-22

//而且与 java中Date相互转换
Date javaDate = featureYear.toDate(); //Sun Oct 22 00:00:00 CST 2017

//获取年月日
LocalDateTime locaDateTime = LocalDateTime.now();

可以看出   joda-time使用起来很方便 
joda-time 使用连接地址  https://www.joda.org/joda-time/ 

二. Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.time (JSR-310).        joda-time从 java8已经迁移进来了 

下面介绍 java8中 localDateTime 和java中的 Date相互转换工具

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

/**
* ......................................
* .没有才怎么怀才不遇,没有志怎么壮志难酬 .
* . ....................................
*
*@Author: lq
*@Date:  2018/11/23 9:03
*@Description:  java中的Date和 localDate 转换
*/
public class Date2LocalTime {
    public static final String FORMAT_ALL = "yyyy-MM-dd HH:mm:ss";

    public static final String FORMAT_LONG = "yyyyMMddHHmmss";

    public static final String FORMAT_YEAR_MONTH = "yyyy-MM-dd";

    public static final String FORMAT_YEARMONTH = "yyyyMMdd";

    /**
     *   joda的 date和java中的 date相互转换   使用的是UTC
     * @return
     */
    public static Date localDateTime2JavaDate(LocalDateTime localDateTime) {
        //获得到本地的时区
        ZoneId localZone = ZoneId.systemDefault();
        ZonedDateTime zdt = localDateTime.atZone(localZone);
        Date date = Date.from(zdt.toInstant());
        return date;
    }


    /**
     * 将 java中的Date转换为 joda time时间
     * @param date
     * @return
     */
    public static LocalDateTime javaDate2LocalDate(Date date) {
        //获得到本地的时区
        Instant instant = date.toInstant();
        ZoneId localZone = ZoneId.systemDefault();
        LocalDateTime localDateTime = instant.atZone(localZone).toLocalDateTime();
        return localDateTime;
    }


    /**
     * 将 joda localDatetime 转换为String类型
     * @param localDateTime
     * @param pattern
     * @return
     */
    public static String localDateTime2String(LocalDateTime localDateTime,String pattern) {
        DateTimeFormatter dtf = null;
        if (localDateTime == null) {
            throw new IllegalArgumentException("传入时间不能为空");
        }
        if (pattern == null) {
            dtf = DateTimeFormatter.ofPattern(FORMAT_ALL);
        }else {
            dtf = DateTimeFormatter.ofPattern(pattern);
        }

        return dtf.format(localDateTime);
    }

    /**
     * 将 java中的日期转为 String类型
     * @param date
     * @param pattern
     * @return
     */
    public static String javaDate2String(Date date,String pattern) {
        SimpleDateFormat sdf = null;
        if (date == null) {
            throw new IllegalArgumentException("传入时间不能为空");
        }
        if (pattern == null) {
            sdf = new SimpleDateFormat(FORMAT_ALL);
        }else {
            sdf = new SimpleDateFormat(pattern);
        }
       return sdf.format(date);
    }

    /**
     * 将字符串转为 java中的日期类型
     * @param date
     * @param pattern
     * @return
     */
    public static Date string2javaDate(String date,String pattern) {
        SimpleDateFormat sdf = null;
        if (date == null) {
            throw new IllegalArgumentException("传入时间不能为空");
        }
        if (pattern == null) {
            sdf = new SimpleDateFormat(FORMAT_ALL);
        }else {
            sdf = new SimpleDateFormat(pattern);
        }
        try {
            return sdf.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 将 String字符串转为 joda localDateTime
     * @param date
     * @param pattern
     * @return
     */
    public static LocalDateTime string2LocalDateTime(String date,String pattern) {
        DateTimeFormatter dtf = null;
        if (date == null) {
            throw new IllegalArgumentException("传入时间不能为空");
        }
        if (pattern == null) {
            dtf = DateTimeFormatter.ofPattern(FORMAT_ALL);
        }else {
            dtf = DateTimeFormatter.ofPattern(pattern);
        }

        return LocalDateTime.parse(date,dtf);
    }

    public static void main(String[] args) {
        LocalDateTime lo = LocalDateTime.now();
        System.out.println(LocalDate.now());
        System.out.println(localDateTime2String(lo.minusYears(1),"yyyy-MM-dd HH:mm:ss"));

        System.out.println(localDateTime2JavaDate(lo));
        System.out.println(javaDate2LocalDate(new Date()));
        System.out.println(javaDate2String(new Date(),null));
        System.out.println(string2LocalDateTime("2018-11-23 10:10:23",null));
    }

输出结果:

猜你喜欢

转载自blog.csdn.net/qq_36260963/article/details/84375202
今日推荐