博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java的时间、日期类
阅读量:7250 次
发布时间:2019-06-29

本文共 2349 字,大约阅读时间需要 7 分钟。

  hot3.png

java原本提供了date和Calendar用于处理日期、时间的类,包括创建日期、时间的对象。获取系统当前的日期、时间等操作。但Date不仅无法实现国际化,而且他对不同属性也使用了前后矛盾的偏移量,月份从0开始 天数从一开始,年份从1900开始的,而calendar又过于复杂。所以一般用java8全新的日期时间类。

1.Date类处理时间,在java.util包下,Date类提供六个构造方法,但有四个已经过时,会引起编译器的警告,剩下两个Data()生成一个代表当前时间的Date对象,该构造器在底层还是带哦用了System.currentTimeMillis()获得long整数的日期作为参数;Date(long date)根据指定long型的整数来生成一个Date对象,该构造器的参数表示创建的Date对象和GMT1970年1月1日00:00:00之间的时间的差,以毫秒作为计时单位。与构造器相同,Date的大部分方法也已经过时了,boolean after(Date when)测试该是日期是否在指定日期when之后,boolean before(Date when)之前,long getTime():返回时间对应的long型的整数,即从GMT1970-01-01 00:00:00到该Date对象之间的时间差,以毫秒作为计时单位。void setTime(long time)设置该Date对象的时间。

2.java提供了Calendar类来更好的处理时间和日期,Calender是一个抽象的类,它用于表示日历。Gelender类本身就是一个抽象类,不能够被实例化,提供日历类的模板,java本身提供一个GregorianCalendar类,一个代表格里高利的实例,通常我们说的公历。Calendar类提供了几个静态方法getInstance()来获取Calender的对象,Calendar也提供大量访问时间。修改时间的方法,void add(int field,int amount)根据日历的规则为给定的日历字段添加或减去指定的时间量;int get(int field)返回指定的日历字段值;int getActualMinimum(int field)返回指定的日历字段可能拥有的最小值。void rool(int field,int amount):与add方法类似,区别在与加上amount后超过该字符段能表示最大的范围时,也不会向上字符进位。void set(int field,int value)将给定的日历字段设置为给定值,void set(int year,int month,int data)设置Calendar对象的年月日三个字符段。void set(int year,int month,int date,int hour,int minute,int second)设置Calendar对象的年月日月份秒6个字符段。

3.java8专门的一个新增的java.time包,该包下有一些常用的类Clock:该类用于获取指定时间的当前的日期时间。Duration:该类代表持续的时间。Instant:代表一个具体的时刻,可以精确到纳秒。LocalDate:该类代表不带时区的时间。LocalDateTime:该类代表不带时区的日期、时间。MonthDay:该类仅表示月日。Year:该类仅表示年。YearMonth:该类仅代表年月。ZonedDatetime:该类代表一个时区化的日期、时间。ZoneId:该类代表一个时区。DayofWeek:这是一个枚举类周一到周六的枚举。Mouth:该类也是一个枚举类,定义一月到十二月的枚举值。

package com.lanou.test;import java.time.Clock;import java.time.Instant;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.ZonedDateTime;public class Demo03 {	public static void main(String[] args) {		// TODO Auto-generated method stub         Clock clock=Clock.systemUTC();         System.out.println(clock.instant());         System.out.println(clock.millis());         System.out.println(System.currentTimeMillis());         Instant instant=Instant.now();         System.out.println(instant);         LocalDate localdate=LocalDate.now();         System.out.println(localdate);         LocalDateTime ldt=LocalDateTime.now();         System.out.println(ldt);         ZonedDateTime zdt=ZonedDateTime.now();         System.out.println(zdt);	}}

 

转载于:https://my.oschina.net/zkctt/blog/710436

你可能感兴趣的文章
一套代码称霸5大端口,移动金融应用还能这样开发?
查看>>
MIT开发Polaris,使网页载入加快34%
查看>>
微软对macOS和Linux开放量子开发工具集
查看>>
一份关于Angular的倡议清单
查看>>
没有估算,你仍然可以用这些决策策略
查看>>
通过调研开源基准测试集,解读大数据的应用现状和开源未来
查看>>
译文-调整G1收集器窍门
查看>>
时序数据库InfluxDB 2.0 alpha 发布:主推新的Flux查询语言,TICK栈将成为整体
查看>>
开源是项“全民工程”,揭秘开源团队的管理运作
查看>>
基于Gitflow分支模型自动化Java项目工作流
查看>>
ES6学习之一
查看>>
专访何红辉:谈谈Android源码中的设计模式
查看>>
超2亿中国用户简历曝光!MongoDB又一重大安全事故
查看>>
网易云信周梁伟专访:亿级架构IM平台的技术难点解析
查看>>
独家揭秘腾讯千亿级参数分布式机器学习系统无量
查看>>
Dubbo Mesh在闲鱼生产环境的落地实践
查看>>
微软Build 2017第二天:跨平台跨硬件开发体验
查看>>
精益项目管理的可行性分析
查看>>
Bitbucket Pipelines在Atlassian的Bitbucket云上提供持续交付功能
查看>>
举重若轻的人人车移动端数据平台
查看>>