java时间类API

一、jdk8之前的日期时间的API测试:

1.System了中currentTimeMIllis();//返回从1970年到现在的总毫秒数

2.java.util.Date和子类java.sql.Date   //返回当前日期,后者是兼容数据库类型的日期

  比如:给一个Date类的日期,可以先使用getTime()转化为毫秒数,然后作为参数传递给创建java.sql.Date的实例化作为参数,那么输出该实例化对象就是数据库兼容类型的日期。

3.simpleDateFormat  //对日期Date类的格式化和解析

  两个操作:

  >格式化:日期——>字符串

  

SimpleDateFormat s = new SimpleDateFormat();//实例化SimpleDateFormat
Date date = new Date();
System.out.println(format);
String format = s.format(date);
System.out.println(format);

  运行结果是这样的:

  

  >解析:格式化的逆过程:

  格式化需要严格对应格式,否则就会抛出异常。默认参数格式就是上面format输出格式,输出就是上面的date输出格式,但是一般来说都喜欢用我们自己看着舒服的格式,比如:

  

SimpleDateFormat s1 = new SimpleDateFormat(“yyy-MM-dd hh:mm:ss”);//实例化SimpleDateFormat
Date date = new Date();
String format = s1.format(date);
System.out.println(format);//2019-05-11 12:50:36

String str = “2019-05-11 12:50:36”
Date date1 = s1.parse(str);//解析
System.out.println(date1);//默认日期格式输出

4.calendar日历类(抽象类)

  4.1实例化的两种方式:

    >创建其子类(GregorianCalendar)的对象

    >调用其静态方法getInstance()获取对象(从源码上其实还是其子类的对象,只是子类难记,用一个方法简单一点)

  4.2常用的方法:

    >get():

int days = calendar.get(Calendar.DAY_OF_MONTH);//获取当前月份的第几天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//获取当前年份的第几天

    >set():

calendar.set(Calendar.DAY_OF_MONTH,22);//将当前月份的第几天改成第22天

    >add():

calendar.add(Calendar.DAY_OF_MONTH,+/-3);//当前月份的第几天+/-3天

    >getTime():

Date date = calendar.getTime();//日历类——>Date

    >setTime():

Date date1 = new Date();
calendar.setTime(date1);//Date转化为日历类
days = calendar.get(Calendar.DAY_OF_MONTH);

输出结构就是以上截图的反着。

在这里其实可以看出来,8.0之前的时间日期API有很多问题要解决:

  • 可变性:像日期时间这样的类应该是不可变的,但是calendar却是没有返回值,直接修改本身。
  • 偏移性:Date中的年份是从1900年开始,而月份都是从0开始。
  • 格式化:格式化只对Date有用,而Calendar则不行。
  • 侧歪,它们线程不安全;不能处理闰秒等。

二、jdk8中新的时间日期API:

1.LocalDate(日期)、LocalTime(时间)、LocalDateTime(日期加时间)

以上这些新的方法就解决了Date和Calendar类的缺点。

用法举例:

LocalDate localDate = LocalDate.now();//获取当前的日期
LocalTime localTime = LocalTime .now();//获取当前的时间
LocalDateTime localDateTime = LocalDateTime.now();//获取当前的日期加时间

2.Instant(类比Date,记录毫秒数):

它的一些方法如下:

用法如下:

Instant instant = Instant.now();//获取本初子午线对应的标准时间,大概比北京时间早8个小时

OffsetDateTime offsetDateTime  = instant.atOffset(ZoneOffset.ofHours(8));//修改成北京时间

long milli = instant.toEpochMilli();//获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数 ——>Date类的getTime()

Instant instant1 = Instant.ofEpochMilli(1550475314895L);//通过给定的毫秒数,获取Instant实例,输出为日期

3.格式化与解析日期时间:

具体使用案例。参照上面的SimpleDateFormat用法。



原文地址:https://www.cnblogs.com/liuhuan425/p/10849575.html

时间: 2024-07-31 09:15:11

java时间类API的相关文章

java时间类的使用

日期的使用: 1.创建日期 2.日期格式化显示 3.日期的转换 4.两个日期的大小比较.日期的加减   一些知识:       全球24个时区的瓜分       格林威治标准时间GMT 世界协调时间(世界标准时间)UTC       夏日节约时间DST       CST时间 CST却同时可以代表如下 4 个不同的时区: Central Standard Time (USA) UT-6:00 Central Standard Time (Australia) UT+9:30 China Stan

java时间类简单总结

java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个):  日期格式为:年月日时分秒(不包含毫秒部分) 两种方式创建:带参构造方法(long型参数:Data(long log)),不带参 常用方法:after(),before(),compareTo()等方法. 直接子类:java.sql.Data(用于提供数据库日期的表示)   日期格式为:年月日(只有日期,没有时间) 该类构造函数必须是带参数的(

java 时间类Date和Calendar

Java的时间类经常用到,主要是两个类Date和Calendar,分别做下介绍. 一.Date 1.在 package java.util 类定义如下: public class Date implements java.io.Serializable, Cloneable, Comparable<Date>{} 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.

Java时间类Date与Calendar的区别与使用 &#350964;

原文: http://blog.gqylpy.com/gqy/464 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

Java 时间类

一.Date类 Date:表示特定的瞬间,精确到毫秒构造方法:     (1)public Date():根据当前的默认毫秒值创建日期对象     (2)public Date(long date):根据给定的毫秒值创建日期对象成员方法:     (1)public long getTime():获取时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数.     (2)public long setTime(long time):设置时间,表示

java时间类简单整合

package com.rengh.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class DateUtils {     /** 格式化时间 */     public static String formatTime(long showTime) {         return

Java中常见时间类的使用

模拟场景针对于常用的操作API,比如流操作(字符流.字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式:这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点.本篇博客将通过一个简单的应用场景来体会这两个类的使用. 项目开发阶段,有一个关于下单发货的需求:如果今天下午三点前进行下单,那么发货时间是明天如果今天下午三点后机型下单,那么发货时间是后天如果被确定的发货时间是周日的话,那么在此时间上再加一天为最终发货时间 牛刀小试( java 原始)整体逻辑:主函数创建下单

Android Java使用JavaMail API发送和接收邮件的代码示例

JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的jar包(请下载javamail的源文件,官方下载页:http://www.oracle.com/technetwork/java/javamail/index-138643.html):mailapi.jar.定义了收发邮件所使用到的接口API:smtp.jar.包含了发送邮件使用到的类:pop3.

Java Calendar类使用总结

平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与时间. 接下来就讲解下Calendar类的使用场景及使用方法. 1.获取Calendar实例 首先,我们看下Calendar类的定义 public abstract class Calendar implements Serializable, Cloneable, Comparable<Calen