Home Tags Posts tagged with "定制"

定制

0 77

这是对java.util.Date强有力的补充,解决了 Date 类的大部分痛点:

  1. 非线程安全
  2. 时区处理麻烦
  3. 各种格式化、和时间计算繁琐
  4. 设计有缺陷,Date 类同时包含日期和时间;还有一个 java.sql.Date,容易混淆。

我们从常用的时间实例来对比 java.util.Date 和新 Date 有什么区别。用java.util.Date的代码该改改了。

java.time 主要类

java.util.Date 既包含日期又包含时间,而 java.time 把它们进行了分离

LocalDateTime.class //日期+时间 format: yyyy-MM-ddTHH:mm:ss.SSS
LocalDate.class //日期 format: yyyy-MM-dd
LocalTime.class //时间 format: HH:mm:ss

一、关于日期格式的补充博文

可在此篇博文中了解到mm和MM的区别、HH和hh的区别等

Java日期格式化(DateFormat类和SimpleDateFormat类) (biancheng.net)

 

package studymaterials;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

/**
 * @Author breakYang
 * @create 2022/4/18 16:54
 *
 * 学习使用Date-Time API
 */
public class LearnDateTime {
    public static void main(String[] args) throws ParseException {
        System.out.println("——————————————————————————————————————————————————");
        System.out.println("JDK1.8之前  格式化日期");
        Date now = new Date();
        //format yyyy-MM-dd HH:mm:ss
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = dateFormat.format(now);
        System.out.println(String.format("dateTime format : %s",date));
        //format yyyy-MM-dd
        SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
        String date1 = dateFormat2.format(now);
        System.out.println(String.format("date format : %s",date1));
        //format HH:mm:ss
        SimpleDateFormat dateFormat1 = new SimpleDateFormat("HH:mm:ss");
        String date2 = dateFormat1.format(now);
        System.out.println(String.format("time format : %s",date2));
        System.out.println("——————————————————————————————————————————————————");
        System.out.println("JDK1.8之前  字符串转日期格式");
        String sourceStr = "2022-4-18 17:53:23";
        SimpleDateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd");
        Date targetDate = dateFormat3.parse(sourceStr);
        System.out.println(targetDate);
        System.out.println("——————————————————————————————————————————————————");
        System.out.println("使用JDK1.8之后的Date-Time API 格式化日期");
        //JDK1.8之后 格式化日期
        //format yyyy-MM-dd HH:mm:ss
        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String dateTimeStr = localDateTime.format(dateTimeFormatter);
        System.out.println(String.format("dateTime format : %s",dateTimeStr));
        //format yyyy-MM-dd
        LocalDate localDate = LocalDate.now();
        System.out.println(String.format("date format : %s",localDate));
        //format HH:mm:ss
        LocalTime localTime = LocalTime.now();
        System.out.println(String.format("time format : %s",localTime));
        System.out.println("——————————————————————————————————————————————————");
        //当前时间
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);//2018-09-06T18:22:47.366
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //将日期类型格式为字符串
        String ldtStr1 = dtf.format(ldt);
        System.out.println(ldtStr1);//2018-09-06 18:22:47
        //将字符串格式化为日期类型
        String str1="2018-07-05 12:24:12";
        LocalDateTime parse = LocalDateTime.parse(str1, dtf);
        System.out.println(parse);
    }
}