首页 > 其他分享 >LocalDateTime、LocalDate、Date的相互转换

LocalDateTime、LocalDate、Date的相互转换

时间:2023-05-31 23:07:59浏览次数:39  
标签:LocalDate LocalDateTime ZoneId localDateTime Date localDate

LocalDateTime 转 LocalDate

直接调用 toLocalDate() 方法

LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();



LocalDateTime 转 Date

在LocalDateTime 转 Date 时,需要使用到 Java 8的几个类

  • ZoneId/ZoneOffset:表示时区
  • ZonedDateTime: 表示特定时区的日期和时间
  • Instant:表示时刻,不直接对应年月日信息,需要通过时区转换
LocalDateTime localDateTime = LocalDateTime.now();
//获取系统默认时区
ZoneId zoneId = ZoneId.systemDefault();
//时区的日期和时间
ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);
//获取时刻
Date date = Date.from(zonedDateTime.toInstant());
System.out.println("格式化前:localDateTime:" + localDateTime + "  Date:" + date);
//格式化LocalDateTime、Date
DateTimeFormatter localDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化后:localDateTime:" + localDateTimeFormat.format(localDateTime) + "  Date:" + dateFormat.format(date));

输出结果如下:

格式化前:localDateTime:2020-10-27T11:35:09.969  Date:Tue Oct 27 11:35:09 CST 2020
格式化后:localDateTime:2020-10-27 11:35:09  Date:2020-10-27 11:35:09



LocalDate 转 LocalDateTime

一般调用 atTime() 方法进行赋值

LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime1 = localDate.atStartOfDay();
LocalDateTime localDateTime2 = localDate.atTime(8,20,33);
LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now());



LocalDate 转 Date

先调用 atStartOfDay() 方法转 LocalDateTime 再转 Date

LocalDate localDate = LocalDate.now();
ZoneId zoneId = ZoneId.systemDefault();
Date date = Date.from(localDate.atStartOfDay().atZone(zoneId).toInstant());



Date 转 LocalDateTime

先转 ZonedDateTime 再转 LocalDateTime

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = date.toInstant().atZone(zoneId).toLocalDateTime();



Date 转 LocalDate

跟 LocalDate 同理

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate localDate = date.toInstant().atZone(zoneId).toLocalDate();

 

 

附:获取昨天日期的写法

/**
     * 通过日历类的Calendar.add方法第二个参数-1达到前一天日期的效果
     * @return
     */
    public static String getYesterdayByCalendar(){
        Calendar calendar = Calendar.getInstance();
        System.out.println(Calendar.DATE);
        calendar.add(Calendar.DATE,-1);
        Date time = calendar.getTime();
        String yesterday = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(time);
        return yesterday;
    }

    /**
     *用当天的日期的long型字符数串减去昨天日期long型字符数串
     * 其中:
     *  86400000L,它的意思是说1天的时间=24小时 x 60分钟 x 60秒 x 1000毫秒 单位是L。
     * @return
     */
    public static String getYesterdayByDate(){
       //实例化当天的日期
        Date today = new Date();
        //用当天的日期减去昨天的日期
        Date yesterdayDate = new Date(today.getTime()-86400000L);
        String yesterday = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(yesterdayDate);
        return yesterday;
    }

    /**
	*java8的
	*/
	private static String getYesterday() {
		LocalDate yesterday = LocalDate.now().minusDays(1);
		return yesterday.toString();
	}

 

标签:LocalDate,LocalDateTime,ZoneId,localDateTime,Date,localDate
From: https://blog.51cto.com/lenglingx/6390767

相关文章

  • Spring boot 使用 jpa 动态插入@DynamicInsert和动态更新@DynamicUpdate(动态指部分或
    @DynamicInsert属性:设置为true,设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false。比如希望数据库插入日期或时间戳字段时,在对象字段为空的情况下,表字段能自动填写当前的sysdate。@DynamicUpdate属性:设置为tru......
  • MyBatis+Sharding-JDBC实体类LocalDateTime类型字段查询报SQLFeatureNotSupportedExce
    问题最近协助渠道组开发新需求,封装实现了一个公共模块供不同渠道项目使用。以前各个渠道项目有很多相似的菜单和功能,各自项目里自己的代码实现,本公共模块对新需求的功能点进行抽象,减少重复代码,提高模块复用性和可维护性。目前有2个渠道项目接入了该公共模块,自测时发现其中1个运......
  • 9. 子查询/INSERT/UPDATE/DELETE/REPLACE(未完成)
    一.子查询子查询就是指在一个select语句中嵌套另外一个select语句。同时子查询必须包含括号。MySQL5.6之前,子查询的性能较差,但是从5.6开始,不存在性能差的问题。selectafromt1wherea>any(selectafromt2);1.selectafromt1是外部查询(outerquery)2.(selectafro......
  • linux时间同步,ntpd、ntpdate
    在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。    但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,......
  • JDK 8 新时间 DateTimeFormatter
         ......
  • JDK 8 新时间Zoneld、ZonedDateTime
         ......
  • JDK 8 新时间LocalDate、LocalTime、LocalDateTime
            ......
  • SimpleDateFormat
           ......
  • elasticsearch date_histogram
    (5)DateHistogramAggregation时间直方图聚合,专门对时间类型的字段做直方图聚合。这种需求是比较常用见得的,我们在统计时,通常就会按照固定的时间断(1个月或1年等)来做统计。下面统计学校中同一年出生的学生数。curl-XPOST"192.168.1.101:9200/student/student/_search?search_type=c......
  • mysql中update会锁表吗
    MySQL中的update操作会不会锁表是一个值得关注的问题,因为这会影响到并发性能和系统的响应速度。本文将从两个方面探讨这个问题:一是有没有索引的情况下,二是MySQL开启了自动提交事务和手动提交事务的情况下。首先,在没有索引的情况下,MySQL的update操作会锁整个表。这是因为在......