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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)