localDateTime、date、localDate、string、long之间的转换处理

在我们实际开发过程中,经常会涉及到时间的处理,下面我整理了一些常用的转换,希望能帮助到各位道友
话不多说,上代码!!!

java8全新的日期和时间API
DateTimeFormatter和SimpleDateFormat区别
SimpleDateFormat:非线程安全的
DateTimeFormatter:线程安全的

//自定义格式化 
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDateTime localDateTime = LocalDateTime.parse("2019-07-31 00:00:00", dtf);
LocalDate localDate = LocalDate.parse("2019-07-31", dtf1);
Date date = Date.from(LocalDateTime.parse("2019-07-31 00:00:00", dtf).atZone(ZoneId.systemDefault()).toInstant());
System.err.println(localDateTime);
System.err.println(localDate);
System.err.println(date);
/*  2019-07-31T00:00
    2019-07-31
    Wed Jul 31 00:00:00 CST 2019
*/

LocalDateTime 转localDate

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

LocalDateTime 转 Long

long milli = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();

LocalDateTime 转 Date

Date date = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());

LocalDateTime 转 String

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = LocalDateTime.now().format(dtf);

LocalDate 转 LocalDateTime

LocalDateTime of = LocalDateTime.of(localDate, LocalTime.parse("00:00:00"));
System.err.println(of);


LocalDate 转 Long

long milli = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
System.err.println(milli);

LocalDate 转 Date

Date date = Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
System.err.println(date);

LocalDate 转 String

String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.err.println(format);


Date 转 LocalDateTime

Date date = new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.err.println(localDateTime);

Date 转 Long

Date date = new Date();
long time = date.getTime();
System.err.println(time);

Date 转 LocalDate

Date date = new Date();
LocalDate localDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
//先将date转为了localDateTime,随后toLocalDate

Date 转 String

Date date = new Date();
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.format(date);

String 转 LocalDateTime

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
LocalDateTime localDateTime = LocalDateTime.parse(strTime, dtf);
System.err.println(localDateTime);

String 转 LocalDate

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
LocalDate localDate = LocalDateTime.parse(strTime, dtf).toLocalDate();
System.err.println(localDate);

String 转 Date

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strTime = "2020-11-04 00:00:00";
Date date = Date.from(LocalDateTime.parse(strTime, dtf).atZone(ZoneId.systemDefault()).toInstant());
System.err.println(date);

Long 转 LocalDateTime

long milli = 1604458818000L;
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault());
System.err.println(localDateTime);

Long 转 LocalDate

long milli = 1604458818000L;
LocalDate localDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(milli), ZoneId.systemDefault()).toLocalDate();
System.err.println(localDate);

LocalDateTime获取前、后的日子

LocalDateTime.now().minusDays(2); //两天前的日期
LocalDateTime.now().plusDays(2);  //两天后的日期
Date date = new Date();//获取当前时间    
Calendar calendar = Calendar.getInstance();    
calendar.setTime(date);    
calendar.add(Calendar.YEAR, -1);//当前时间减去一年,即一年前的时间    
calendar.add(Calendar.MONTH, -1);//当前时间前去一个月,即一个月前的时间    
calendar.getTime();//获取一年前的时间,或者一个月前的时间    
  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值