Java8的DateTimeFormatter与SimpleDateFormat的区别详解

网友投稿 204 2023-01-26

Java8的DateTimeFormatter与SimpleDateFormat的区别详解

两者最大的区别是,java8的DateTimeFormatter是线程安全的,而SimpleDateFormat并不是线程安全。

package com.main;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.time.LocalDate;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.util.Date;

public class Main {

public static void main(String args[]){

//解析日期

String dateStr= "2016年10月25日";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");

LocalDate date= LocalDate.parse(dateStr, formatter);

//日期转换为字符串

LocalDateTime now = LocalDateTime.now();

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm a");

String nowStr = now .format(format);

System.out.printlhttp://n(nowStr);

//ThreadLocal来限制SimpleDateFormat

System.out.println(format(new Date()));

}

//要在高并发环境下能有比较好的体验,可以使用ThreadLocal来限制SimpleDateFormat只能在线程内共享,这样就避免了多线程导致的线程安全问题。

private static ThreadLocal threadLocal = new ThreadLocal() {

@Override

protected DateFormat initialValue() {

return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

}

};

public static String format(Date date) {

return threadLocal.get().format(date);

}

}

Java8 (LocalDateTime) 时间转换

注意:LocalDateTime是带时分秒的

1.将LocalDateTime转为自定义的时间格式的字符串

public static String getDateTimeAsString(LocalDateTime localDateTime, String format) {

DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);

return localDateTime.format(formatter);

}

2.将long类型的timestamp转为LocalDateTime

public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {

Instant instant = Instant.ofEpochMilli(timestamp);

ZoneId zone = ZoneId.systemDefault();

return LocalDateTime.ofInstant(instant, zone);

}

3.将LocalDateTime转为long类型的timestamp

public static long getTimestampOfDateTime(LocalDateTime localDateTime) {

ZoneId zone = ZoneId.systemDefault();

Instant instant = localDateTime.atZone(zone).toInstant();

return instant.toEpochMilli();

}

4.将某时间字符串转为自定义时间格式的LocalDateTime

public static LocalDateTime parseStringToDateTime(String time, String format) {

DateTimeFormatter df = DateTimeFormatter.ofPattern(format);

return LocalDateTime.parse(time, df);

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot+netty
下一篇:免费api调用工具(API文档工具)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~