Java之日期与时间
Date类
Date类代表当前所在系统的日期时间信息
Date的构造器
public Date() //创建一个Date对象,代表的是系统当前此刻日期与时间
public Date(long time) //可以把时间毫秒值转换成Date的日期对象
Date的常用方法
public long getTime() //返回从1970年1月1日 00:00:00走到此刻的毫秒数
public void setTime() //设置日期对象的时间为当前时间毫秒值对应的时间
SimpleDateFormat类
它是用来对日期格式化的一个类,因为日期对象直接输出的话数据很多很复杂
例如:
public static void main(String[] args){Data d= new Date();System.out.println(d);//Thu Sep 22 19:41:39 CST 2022long t = d.getTime();System.out.println(t);//1663846899021}
而我们日常见到的时间经常是 xxxx-xx-xx xx:xx:xx,如2012-12-23 13:25:16,那么我们就可使用SimpleDateFormat来格式话日期。
构造器:
public SimpleDataFormat(String pattern) //创建了一个简单日期格式化对象,并存储了一 个格式化的信息格式
格式化方法:
public final String format(Date date) //将日期格式化为日期/时间字符串
public final String format(Object time) //将时间毫秒值化为日期/时间字符串
常用格式模式:
2022-12-12 13:14:15————yyyy-MM-dd HH:mm:ss
2022年12月12日 13:14:15————yyyy年MM月dd日 HH:mm:ss
解析字符串时间为日期对象
public Date parse(String source) //从给定字符串时间来转化为Date对象
Calendar类
calendar顾名思义是一个日历类,代表此时日期对应的日历对象。但是他是一个抽象类,不能直接创建对象。
创建对象的方法:
public static Calendar getInstance() //获取当前日历对象
常用方法:
public int get(int field) //去日期中的某个字段信息
public void set (int field,int value) //修改日历的某个字段信息
public void add(int field,int amout) //为某个字段增加减少指定的值
public final Date getTime() //拿到此刻日期对象
public long getTimeMillis() //拿到此刻时间毫秒值
Java8后新提供的时间类
LocalDate | 不包含具体时间的日期 |
LocalTime | 不包含日期的时间 |
LocalDateTime | 包含了日期及时间 |
Instant | 代表的是时间戳 |
DateTimeFormatter | 用于做时间的格式化和解析 |
Duration | 用于计算两个”时间“间隔 |
Preriod | 用于计算两个”日期“间隔 |
新增的Api严格划分了时间,这样对时间的处理就会更加方便,并且新的Api类型几乎都是不变类型,不用担心被修改。
LocalDate LocalTime LocalDateTime
这三个类创建的对象都是不可变对象,他们三者的API都是通用的。
创建对象的方法
public static xxxx now(); //静态方法,根据当前时间创建对象
public static xxxx of(...); //静态方法,指定日期/时间创建对象
常用API
public int getYear() | 获取年 |
public int getMonthValue() | 获取月份 |
public int getDayOfMonth() | 获取是当前月的第几天 |
public int getDayOfYear() | 获取是当前年的第几天 |
public DayOfWeek getDayOfWeek() |
获取星期 |
LocalDateTime可以转化为其他两个类
public LocalDate toLocalDate() //转换成一个LocalDate对象
public LocalTime toLocalTime() //转换成一个LocalTime对象
修改日期相关API
plusDays,plusWeeks,plusMonths,plusYears | 向当前的LocalDate对象添加天数,周数,月数,年数 |
minusDays,minusWeeks,minusMonths,minusYears | 向当前的LocalDate对象减去天数,周数,月数,年数 |
withDayOfMonth,withDayOfYear,withMonth,withYear | 将月份天数,年份天数,月份,年份修改完指定的值并返回新的LocalDate对象 |
isBefore,isAfter | 比较两个LocalDate |
Instant
Instant即时间戳,Instant类由一个静态的工厂方法now()可以返回当前时间戳
Instant instant = Instant.now();
System.out.println("当前时间戳是: "+instant);Date date = Date.from(instant);
System.out.println("当前时间戳是: "+data);instant=date.toInstant();
System.out.println(instant);
DateTimeFormatter
即时间格式器,正反都能使用format方法
LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);//2022-10-05T16:14:40.253223400DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String ldtStr = ldt.format(dtf);System.out.println(ldtStr);//2022-10-05 16:14:40String ldtStr1 = dtf.format(ldt);System.out.println(ldtStr1);//2022-10-05 16:14:40
Period
Period类常用来计算日期间隔差异,用于比较LocalDate
LocalDate today = LocalDate.now();System.out.println(today); // 2022-10-05LocalDate birthDate = LocalDate.of(1995, 1, 11);System.out.println(birthDate); // 1995-01-11Period period = Period.between(birthDate, today);System.out.printf("年龄 : %d 年 %d 月 %d 日", period.getYears(), period.getMonths(), period.getDays());
Duration
Duration类用来计算时间间隔是LocalDateTime之间的比较,也可以用于Instant之间的比较
LocalDateTime today = LocalDateTime.now();System.out.println(today);LocalDateTime birthDate = LocalDateTime.of(1990,10,1,10,50,30);System.out.println(birthDate);Duration duration = Duration.between(birthDate, today);//第二个参数减第一个参数System.out.println(duration.toDays());//两个时间差的天数System.out.println(duration.toHours());//两个时间差的小时数System.out.println(duration.toMinutes());//两个时间差的分钟数System.out.println(duration.toMillis());//两个时间差的毫秒数System.out.println(duration.toNanos());//两个时间差的纳秒数
最后还有一个ChronoUnit类可以用于在单个时间单位内测量一段时间,这个工具类是最全的,可以用于比较所有的时间单位,具体方法可以自行去JDK文档查看,再此就不列举了。
Java之日期与时间相关推荐
- Java 8 日期和时间解读
转载自 Java 8 日期和时间解读 现在,一些应用程序仍然在使用java.util.Date和java.util.Calendar API和它们的类库,来使我们在生活中更加轻松的处理日期和时间,比如 ...
- java国际化——日期和时间+排序
[0]README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化--日期和时间+排序 的基础知识 : [1]日期和时间 1)当格 ...
- Java的日期与时间之如何计算业务代码的运行时间呢?
转自: Java的日期与时间之如何计算业务代码的运行时间呢? 下文笔者讲述计算运行时间的方法分享,如下所示 实现思路:在业务开始时间和结束时间都加入获取时间的方法然后相减即可得到运行时间 例: lon ...
- Java 8 - 日期和时间实用技巧
Java 8 – 日期和时间实用技巧 当你开始使用Java操作日期和时间的时候,会有一些棘手.你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数. ...
- Java 8 日期、时间、时间矫正器操作
Java 8 日期.时间操作 真放肆不在饮酒放荡,假矜持偏要慷慨激昂.万事留一线,江湖好相见–老郭经典语录 本篇描述LocalDate.LocalTime.LocalDateTime.Temporal ...
- Java的日期与时间java.time.Duration的简介说明
转自: Java的日期与时间java.time.Duration的简介说明 下文笔者讲述Duration类的简介说明,如下所示 Duration类简介 Duration对象:表示两个Instant间的 ...
- LocalDateTime - Java处理日期和时间
java.time包提供了新的日期和时间的API,新的API主要包括:1. LocalDate/LocalTime/LocalDateTime2. ZoneDateTime/ZoneId3. Inst ...
- Date - Java处理日期和时间
在计算机中如何表示日期和时间呢,我们可以想到有几种表示方式,一种是2016-11-20 8::15:01 GMT+08:00,或者我们用其他的时区,比如GMT+00:00标准时区,或者 America ...
- Java 8日期和时间
如今,一些应用程序仍在使用java.util.Date和java.util.Calendar API,包括使我们的生活更轻松地使用这些类型的库,例如JodaTime. 但是,Java 8引入了新的AP ...
- 深入了解Java 8日期和时间API
在这篇文章中,我们将更深入地了解通过Java 8获得的新的Date / Time API( JSR 310 ). 请注意,本文主要由显示新API功能的代码示例驱动. 我认为这些示例是不言自明的,因此我 ...
最新文章
- Anaconda安装包报错——UnavailableInvalidChannel: The channel is not accessible or is invalid
- c++stack容器介绍
- Mysql数据类型之浮点与二进制型数据使用案例总结
- //监测网络状态(AFNetworking) 服务端 客户端
- 取消回车表单自动提交
- 剑指offer——面试题60:把二叉树打印成多行
- 1.2Tensorflow的Session操作
- Java-集合练习题
- csdn笔记怎么用看这里
- 如何绘制用例图 - How to Draw Use Case Diagram
- 老少恋中的愉悦和不安
- Unix 开机时如何自启动oracle
- android版本新 老程序不能用_微信拍一拍功能不知道怎么用?教你拍好友和拍自己...
- sbt的安装和应用(详细步骤)
- 程序员们该活动活动了 ,北京的同行们给你们推荐点北京好玩的地方
- postfix邮件管理
- “刷脸出入” 人脸识别门禁强化出入安全
- matlab 理想低通滤波器函数,理想滤波器、原型模拟滤波器和窗函数的特性matlab6...
- 2021安徽省计算机水平模拟考试,我校完成2021年上半年全国高等学校(安徽考区)计算机水平考试...
- 计算机化信息系统 医疗,浅述监护信息系统在临床决策信息化建设中的价值