Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面

文章目录

    • java.lang.System类
    • java.util.Date类
    • java.sql.Date类
    • java.text.SimpleDateFormat类
    • java.util.Calendar(日历)类
    • java.time类
    • java.time.Instant类
    • java.time.format.DateTimeFormatter 类
    • 其它API



java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差(时间戳)。(此方法适于计算时间差)

long time = System.currentTimeMillis();
System.out.println(time);


java.util.Date类

构造器:
Date():创建的对象可以获取本地当前时间
Date(long date):创建指定毫秒数的Date对象,相当于又将时间戳转换成String形式

常用方法
getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。

import java.util.Date;public class DataTest {public static void main(String[] args) {Date date = new Date();System.out.println(date.toString());System.out.println(date); //等同于toString()方法System.out.println(date.getTime());}
}


java.sql.Date类

是java.util.Date类的子类,对应着数据库中的日期类型的变量。

构造器:java.sql.Date(时间戳)

常用方法:同上

java.sql.Date与java.util.Date转换,可以通过多态和getTime()方法

import java.util.Date;public class DataTest {public static void main(String[] args) {Date date = new Date();java.sql.Date sqlDate = new java.sql.Date(date.getTime());System.out.println(sqlDate);}
}


java.text.SimpleDateFormat类

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。其允许进行①格式化:日期—>字符串、②解析:字符串—>日期。

格式化:
1.实例化
①SimpleDateFormat() :默认的模式和语言环境创建对象
②SimpleDateFormat(String pattern):该构造方法可以用参数pattern指定的格式创建一个对象
2.格式化
实例化对象调用 String format(Date date)方法格式化时间对象

import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat(); //无参默认模式实例化Date date = new Date(); String format = sdf.format(date); //格式化System.out.println(format);}
}

在这里插入图片描述

import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleTest {public static void main(String[] args) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss"); //带参指定格式实例化Date date = new Date();String format = sdf.format(date); //格式化System.out.println(format);}
}

在这里插入图片描述
关于指定格式:
在这里插入图片描述
在这里插入图片描述
解析(格式化逆过程):
Date parse(String source):依据格式解析字符串,以生成一个日期(注意格式的匹配对应,否则抛异常)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class SimpleTest {public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss"); //带参指定格式实例化Date parse = sdf.parse("2020-12-20  22:03:19");System.out.println(parse);}
}

在这里插入图片描述



java.util.Calendar(日历)类

这是一个抽象(abstract)类,主用用于完成日期字段之间相互操作的功能。

实例化:
①使用Calendar.getInstance()该静态方法
②调用它的子类GregorianCalendar的构造器

常用方法:

import java.util.Calendar;
import java.util.Date;public class CalendarTest {public static void main(String[] args) {Calendar instance = Calendar.getInstance();//get():int get(int field)int ofMouth = instance.get(Calendar.DAY_OF_MONTH);System.out.println(ofMouth);int ofYear = instance.get(Calendar.DAY_OF_YEAR);System.out.println(ofYear);//set():void set(int field,int value)instance.set(Calendar.DAY_OF_MONTH,9);System.out.println(instance.get(Calendar.DAY_OF_MONTH));//add:void add(int field,int amount)instance.add(Calendar.DAY_OF_MONTH,-2);System.out.println(instance.get(Calendar.DAY_OF_MONTH));//getTime:final Date getTime() 将日历类型转换为Date类型Date time = instance.getTime();System.out.println(time);//setTime:final void setTime(Date date) 将Date类型转换为日历类型instance.setTime(new Date());System.out.println("********" + instance.getTime());}
}

在这里插入图片描述
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND。



java.time类

LocalDate、LocalTime、LocalDateTime 类是其中较重要的几个子类,它们的实例
是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。

实例化:
在这里插入图片描述

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;public class TimeTest {public static void main(String[] args) {//now() 获取当前日期,时间,日期+时间LocalDate now1 = LocalDate.now();LocalTime now2 = LocalTime.now();LocalDateTime now3 = LocalDateTime.now();System.out.println(now1);System.out.println(now2);System.out.println(now3);//of() 设置指定的年月日时分秒,没有偏移量LocalDateTime of = LocalDateTime.of(2021, 9, 9, 15, 36, 40);System.out.println(of);}
}

在这里插入图片描述

其他常用方法:
在这里插入图片描述

import java.time.LocalDateTime;public class TimeTest {public static void main(String[] args) {LocalDateTime now = LocalDateTime.now();//getXxx() 获取相关的属性System.out.println(now.getDayOfWeek());System.out.println(now.getMonth());System.out.println(now.getMonthValue()); //......//withXxx() 设置相关的属性,不可变性LocalDateTime nowWith = now.withDayOfMonth(8);System.out.println(nowWith);System.out.println(now);//plusXxx() 加,不可变性LocalDateTime pl = now.plusMonths(2);System.out.println(pl);//minusXxx() 减,不可变性LocalDateTime mi = now.minusDays(8);System.out.println(mi);}
}

在这里插入图片描述



java.time.Instant类

Instant:时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间
戳。

在这里插入图片描述

import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;public class InstantTest {public static void main(String[] args) {//获取本初子午线当前的标准时间Instant now = Instant.now();System.out.println(now);//结合时区,添加当地时间偏移量OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));System.out.println(offsetDateTime);//返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳long l = now.toEpochMilli();System.out.println(l);//返回在1970-01-01 00:00:00基础上加上指定毫秒数之后的Instant类的对象Instant instant = Instant.ofEpochMilli(l);System.out.println(instant);}
}

在这里插入图片描述



java.time.format.DateTimeFormatter 类

该类提供了三种格式化方法:
①预定义的标准格式,如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
②本地化相关的格式,如:ofLocalizedDateTime(FormatStyle.LONG)
③自定义的格式,如:ofPattern(“yyyy-MM-dd hh:mm:ss”)

在这里插入图片描述

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;public class FormatterTest {public static void main(String[] args) {//方式一:预定义的标准格式DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_LOCAL_DATE_TIME;//格式化String format1 = isoDateTime.format(LocalDateTime.now());System.out.println(format1);//解析TemporalAccessor parse1 = isoDateTime.parse(format1);System.out.println(parse1);//方式二:本地化相关的格式DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);//格式化String format2 = dateTimeFormatter.format(LocalDateTime.now());System.out.println(format2);//解析TemporalAccessor parse2 = dateTimeFormatter.parse(format2);System.out.println(parse2);//方式三:自定义格式DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");//格式化String format3 = dateTimeFormatter3.format(LocalDateTime.now());System.out.println(format3);//解析TemporalAccessor parse3 = dateTimeFormatter3.parse(format3);System.out.println(parse3);}
}

在这里插入图片描述



其它API

ZoneId:该类中包含了所有的时区信息,一个时区的ID,如 Europe/Paris
ZonedDateTime:一个在ISO-8601日历系统时区的日期时间,
如 2007-12-03T10:15:30+01:00 Europe/Paris
其中每个时区都对应着ID,地区ID都为“{区域}/{城市}”的格式,例如:
Asia/Shanghai等

Clock:使用时区提供对当前即时、日期和时间的访问的时钟
持续时间:Duration,用于计算两个“时间”间隔
日期间隔:Period,用于计算两个“日期”间隔

TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。
TemporalAdjusters : 该类通过静态方法(firstDayOfXxx()/lastDayOfXxx()/nextXxx())提供了大量的常用TemporalAdjuster 的实现

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache camel_Apache Camel简介

apache camelApache Camel是著名的企业集成模式的开源实现。 Camel是一个路由和中介引擎,可帮助开发人员以各种特定于域的语言(DSL)(例如Java,Spring / XML,scala等)创建路由和中介规则。 骆驼…

Angular5 JWT身份验证(Spring Boot安全性)

欢迎使用带有Spring Security的angular5 jwt身份验证。在本教程中,我们将在一个angular5单页应用程序中使用jwt身份验证创建一个完整的堆栈应用程序,该应用程序具有由spring boot支持并集成了spring security的后备服务器。带有集成了HttpInterceptor的示…

Java常用类(4)--System类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部,该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,可以…

Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

文章目录BigInteger类BigDecimal类BigInteger类 Integer类作为int的包装类,能存储的最大整型值为2^31-1,Long类也是有限的, 最大为2^63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力。 java.math包的…

Java枚举类(1)--枚举类的定义、方法使用和接口实现

文章目录枚举类的理解枚举类的定义Enum类的主要方法枚举类实现接口枚举类的理解 当类的对象只有有限个,且确定的,称此类为枚举类。 当需要定义一组常量时,强烈建议使用枚举类。 如果枚举类中只有一个对象,则可以作为单例模式的…

java备忘录_Java 8备忘单中的可选

java备忘录Java 8 java.util.Optional<T>是scala.Option[T]和Data.Maybe在Haskell中的较差表亲。 但这并不意味着它没有用。 如果您不熟悉此概念&#xff0c;请将Optional想象为可能包含或不包含某些值的容器。 就像Java中的所有引用都可以指向某个对象或为null &#xf…

IDEA中注解注释快捷键及模板

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 文章目录单行注释多行注释文档注释(块注释)方法说明注解自动注…

让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

文章目录单行和多行注释文档注释&#xff08;Java特有&#xff09;Annotation(注解)的理解常见的Annotation示例IDEA注释注解快捷键及模板自定义 AnnotationJDK 中的元注解单行和多行注释 注释的内容不参与编译&#xff0c;即编译以后的.class的字节码文件中不包含注释的内容。…

Java集合(1)--集合概述

Java 集合可分为 Collection 和 Map 两种体系 Collection接口&#xff1a;单列数据&#xff0c;定义了存取一组对象的方法的集合 ——List&#xff1a;元素有序、可重复的集合 ——Set&#xff1a;元素无序、不可重复的集合 Map接口&#xff1a;双列数据&#xff0c;保存具有…

win7下oracle10g安装,专门针对win7下oracle10g安装的详解

Window 7 下面安装Oracle 10g今在win7下安装oracle 10g client的时候遇到下面问题&#xff1a;在执行先决条件的时候&#xff0c;报目前只支持6.0的版本&#xff0c;修改oraparam.ini文件中的以下内容&#xff1a;[Certified Versions]#You can customise error message shown …

Java集合(3)--Iterator迭代器

Iterator对象称为迭代器(设计模式的一种)&#xff0c;主要用于遍历 Collection 集合中的元素。Collection接口继承了java.lang.Iterable接口&#xff0c;该接口有一个iterator()方法&#xff0c;那么所有实现了Collection接口的集合类都有一个iterator()方法&#xff0c;用以返…

Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector

文章目录List接口概述List接口常用方法ArrayList实现类LinkedList实现类Vector实现类List接口概述 List集合类中元素有序、且可重复&#xff0c;集合中的每个元素都有其对应的顺序索引 List容器中的元素都对应一个整数型的序号记载其在容器中的位置&#xff0c;可以根据 序号…

java hadoop_单元测试Java Hadoop作业

java hadoop在我以前的文章中&#xff0c;我展示了如何设置一个完整的基于Maven的项目&#xff0c;以用Java创建Hadoop作业。 当然并没有完成&#xff0c;因为它缺少单元测试部分。 在这篇文章中&#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单…

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败&#xff0c;出现ORA-28547错误。原因&#xff1a;navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法&#xff1a;1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口&#xff0c;set接口没有定义额外的方法&#xff0c;使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素&#xff0c;如果试把两个相同的元素…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在&#xff0c;用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…

Java集合(7)--Map接口的实现类HashMap、LinkHashMap、TreeMap和Properties

文章目录HashMap类LinkedHashMap类TreeMap类Hashtable类Properties类HashMap类 1、HashMap类概述 HashMap是 Map 接口使用频率最高的实现类&#xff0c;允许使用null键和null值&#xff0c;与HashSet一样&#xff0c;不保证映射的顺序。 所有的key构成的集合是Set&#xff1a…

为什么SpringBoot如此受欢迎,以及如何有效地学习SpringBoot?

SpringBoot是最流行和使用最广泛的Java框架。 有时这种讨论“为什么SpringBoot如此受欢迎&#xff1f;” 来我和我的朋友/同事之间。 另外&#xff0c;我确实收到了许多人发来的电子邮件&#xff0c;询问“春天很大&#xff0c;如何快速学习&#xff1f;” 。 在这篇文章中&…

Java实现复数Complex的加减乘除运算、取模、求幅角角度

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; /*** Author: Yeman* Date: 2021-09-23-9:03* Description:*/…

Java集合(8)--集合工具类Collections

Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。 排序操作 reverse(List)&#xff1a;反转 List 中元素的顺…