Java面向对象9-日期和时间API

一、JDK 8之前日期和时间的API

 

Java.lang.System类

System类提供的public static long currentTimeMills()用来返回当前时间与1970年1月1日0分0秒之间以毫秒为单位的时间差, 称为时间戳。

1 long time = System.currentTimeMills();

此方法适用于计算时间差

 

Java.util.Date类

1 Date data1 = new Date();
2 data1.toString();  //显示当前年月日时分秒
3 data1.getTime();  //获取时间戳

 

Java.sql.Date类

1 java.sql.Date date2 = new java.sql.Date(35235325345L);  //指定毫秒数,可以打印出年月日

 

Java.util.Date类 和 Java.sql.Date类 互转

1 Date date1 = new Date();
2 java.sql.Date date2 = new java.sql.Date(date1.getTime());

 

SimpleDateFormat的使用:对日期Date类的格式化和解析

复制代码
 1 SimpleDateFormat sdf = new SimpleDateFormat();  
 2 //SimpleDateFormat sdf1 = new SimpleDateFormat(pattern:"yyyy-MM-dd:mm:ss");  //按照指定方式进行格式化
 3 //格式化:日期->字符串
 4 Date date = new Date();
 5 
 6 sdf.format(date);
 7 
 8 //解析:格式化的逆过程,字符串->日期
 9 String str = "19-12-18 上午11:43";
10 Date date1 = sdf.parse(str);
复制代码

 

 

 

Calendar日历类

1 Calendar calendar = Calendar.getInstance();

 

常用方法

get()

set()

add()

getTime()

setTime()

 

 

二、Java8中日期和时间的API

LocalDate, LocalTime, LocalDateTime的使用

 

 

 

now():获取当前的日期、时间、日期+时间

1 LocalDate localDate = LocalDate.now();
2 LocalTime localTime = LocalTime.now();
3 LocalDateTime localDateTime = LocalDateTime.now();
4 System.out.println(localDate);
5 System.out.println(localTime);
6 System.out.println(localDateTime);

 

 

of():设置指定的年、月、日、时、分、秒 没有偏移量

1 LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
2 System.out.println(localDateTime1);

 

 

getXxx():获取相关的属性

1 System.out.println(localDateTime.getDayOfMonth());
2 System.out.println(localDateTime.getDayOfWeek());
3 System.out.println(localDateTime.getMonth());//英文的月份呢
4 System.out.println(localDateTime.getMonthValue());//月份的数字
5 System.out.println(localDateTime.getMinute());

 

 

 

withXxx():设置相关的属性

复制代码
 1 LocalDate localDate1 = localDate.withDayOfMonth(22);//体现了不可变性,只有返回值进行了修改,本身的值是不变的
 2 System.out.println(localDate);
 3 System.out.println(localDate1);
 4 
 5 LocalDateTime localDateTime2 = localDateTime.withHour(4);
 6 System.out.println(localDateTime);
 7 System.out.println(localDateTime2);
 8 
 9 LocalDateTime localDateTime3 = localDateTime.plusMonths(3);//加上
10 System.out.println(localDateTime);
11 System.out.println(localDateTime3);
12 
13 LocalDateTime localDateTime4 = localDateTime.minusDays(6);//减少
14 System.out.println(localDateTime);
15 System.out.println(localDateTime4);
复制代码

 

 

Instant类

复制代码
 1 public static void main(String[] args){
 2         //获取本初子午线标准时间
 3         Instant instant=Instant.now();
 4         System.out.println(instant);//与东八区时间相差8小时
 5         //添加时间的偏移量
 6         OffsetDateTime offsetDateTime=instant.atOffset(ZoneOffset.ofHours(8));
 7         System.out.println(offsetDateTime);//现在与东八区时间相同了
 8 
 9         //获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数
10         long mm=instant.toEpochMilli();
11         System.out.println(mm);
12 
13         //通过给定的毫秒数,获取Instant实例
14         Instant instant1=Instant.ofEpochMilli(1588216827217L);
15         System.out.println(instant1);
16     }
复制代码

 

 

DateTimeFormatter类

复制代码
 1 完成时间日期类的格式化
 2 
 3 package changYongLei;
 4 
 5 import java.time.*;
 6 import java.time.format.*;
 7 
 8 //完成日期、时间格式化
 9 public class GeShiHuaLei_DateTimeFormatter {
10    public static void main(String[] args) {
11     LocalDateTime date = LocalDateTime.now();
12     //1.使用常量创建DateTimeFormatter
13     DateTimeFormatter dtf1 = DateTimeFormatter.ISO_DATE_TIME;
14     System.out.println("使用常量创建DateTimeFormatter:"+dtf1.format(date));
15     //2.使用MEDIUM类型风格的DateTimeFormatter
16     DateTimeFormatter dtf2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
17     System.out.println("使用MEDIUM类型风格的DateTimeFormatter:"+dtf2.format(date));
18     //3.根据模式字符串来创建DateTimeFormatter格式器
19     DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd  HH:mm:ss");
20     System.out.println("根据模式字符串来创建DateTimeFormatter格式器:"+date.format(dtf3));
21     System.out.println("根据模式字符串来创建DateTimeFormatter格式器:"+dtf3.format(date));
22    }
23 }
复制代码

 

 

复制代码
 1 解析字符串
 2 
 3 package changYongLei;
 4 
 5 import java.time.LocalDateTime;
 6 import java.time.format.*;
 7 
 8 //解析字符串
 9 public class GeShiHuaLei_DateTimeFormatter2 {
10   public static void main(String[] args) {
11    //定义两种日期格式的字符串
12    String str1 = "2020-05-20 12:36:34";
13    String str2 = "2020年05月20日 12点36分34秒";
14    //定义解析所用的格式器
15    DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
16    DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH点mm分ss秒");
17    //使用DateTimeFormatter的parse()方法执行解析
18    LocalDateTime ldt1 = LocalDateTime.parse(str1, dtf1);
19    LocalDateTime ldt2 = LocalDateTime.parse(str2, dtf2);
20    //输出
21    System.out.println(ldt1);
22    System.out.println(ldt2);
23   }
24 }
复制代码

 

posted @   草莓小甜心  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示