zoukankan      html  css  js  c++  java
  • Java8新特性-日期相关类操作

    JDK8以前使用SImpleDateFormate类格式化日期,因为在SImple DateFormate中存在Calendar实例引用,而在caleander中得establish中存在clear()和set()操作,在多线程情况下会产生问题,导致后面得后面线程修改之前线程,因此SImpleDateFormate是线程不安全得;

    JDK8中使用DateTimeFormate日期格式化。在JDK8中新增得类是final关键子修饰不可变线程安全,所以可以安全的操作日期转换。

    解决SImpleDateFormate线程不安全:

        采用局部变量的方式,缺点是每次调用方法时,会有对象产生,对象的回收

        采用synchronized或lock,缺点是同一时间内只有一个线程在操作,降低效率

        采用第三方框架:joda-time

        使用ThreadLocal采用线程副本的方式,使每个线程自身拥有SimpleDateFormate对象。

    public class DateUtil {
    
        private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
        private static ThreadLocal threadLocal = new ThreadLocal();
    
        public static Date parse(String textDate) throws ParseException {
            return getDateFormat().parse(textDate);
        }
        public static String format(Date date) throws ParseException {
            return getDateFormat().format(date);
        }
        public static DateFormat getDateFormat() {
            DateFormat df = (DateFormat) threadLocal.get();
            if (df == null) {
                df = new SimpleDateFormat(DATE_FORMAT);
                threadLocal.set(df);
            }
            return df;
        }
    
        public static void main(String[] args) throws ParseException {
            String format = DateUtil.format(new Date());
            System.out.println(format);
            Date parse = DateUtil.parse("2019-12-03 16:02:59");
            System.out.println(parse);
        }
    } 
    View Code

    JDK8中日期函数操作

    1. 获得当前时间,当前时间

            LocalDate localDate = LocalDate.now();
            System.out.println(localDate);//2019-12-03
            Date date = new Date();
            System.out.println(date);//Tue Dec 03 14:49:30 CST 2019
    

    2. 获得当前毫秒数

        Long millisecond = Instant.now().toEpochMilli();

    3.  毫秒数转日期

    LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1575356644592L), ZoneId.systemDefault());
    System.out.println(localDateTime);

    4. 日期转字符串

    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String format = now.format(formatter);
    System.out.println(format);//2019-12-03 15:09:38

    5. 字符串转日期

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime parse = LocalDateTime.parse("2019-12-03 13:52:50", dtf);
    System.out.println(parse);

  • 相关阅读:
    python 爬虫数据处理字符串时间转换格式方法
    python 爬虫时间数据-时间格式转换
    python 爬虫数据时间转换格式
    python 爬虫newspaper3k 新闻爬去方法 利用第三方库
    python 三方库
    python 26个技巧
    python 爬虫第三方库
    python 爬虫数据准换时间格式
    python cookies提取——从字符串到字典(一行Python代码)
    python scrapy 把cookie并转化为字典的形式
  • 原文地址:https://www.cnblogs.com/dc-earl/p/11978050.html
Copyright © 2011-2022 走看看