CodeGym /Java 课程 /模块 1 /使用 DateTime API 时需要注意的细微差别

使用 DateTime API 时需要注意的细微差别

模块 1
第 27 级 , 课程 4
可用

1.LocalDateTime

该类结合了和类LocalDateTime的功能:它存储日期和时间。它的对象也是不可变的,它的方法类似于和类的方法。LocalDateLocalTimeLocalDateLocalTime

获取当前日期和时间

一切都如您所料:我们使用now()方法。例子:

代码 控制台输出
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

Now = 2019-02-22T09:49:19.275039200

在屏幕上显示时,日期和时间以字母 分隔T

获取特定日期和时间

不出所料,一切都类似于LocalDateLocalTime类——我们使用of()方法:

... = LocalDateTime.of(year, month, day, hours, minutes, seconds);

首先,有一些参数以与LocalDate类中相同的格式指定日期。然后有一些参数以与类中相同的格式指定时间LocalTime。下面列出了该方法的所有变体of()

方法
of (int year, int month, int day, int hour, int minute)
of (int year, int month, int day, int hour, int minute, int second)
of (int year, int month, int day, int hour, int minute, int second, int nano)
of (int year, Month month, int day, int hour, int minute)
of (int year, Month month, int day, int hour, int minute, int second)
of (int year, Month month, int day, int hour, int minute, int second, int nano)
of (LocalDate date, LocalTime time)

可以直接设置日期,也可以通过LocalDateandLocalTime对象间接设置:

代码
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime current = LocalDateTime.of(date, time);
System.out.println("Now = " + current);

LocalDateTime date = LocalDateTime.of(2019, Month.MAY, 15, 12, 15, 00);
System.out.println("Now = " + date);
控制台输出
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

该类LocalDateTime具有获取日期和/或时间元素的方法。LocalDate它们完全反映了和类的方法LocalTime。我们不会在这里重复它们。



2.Instant

Java 的创造者也没有忘记老派的方式。

Date Time API 包括一个 Instant 类,用于处理用于计算机中发生的进程的时间。它处理的不是小时、分钟和秒,而是秒、毫秒和纳秒。

这个类有两个字段代表:

  • 自 1970 年 1 月 1 日以来经过秒数
  • 纳秒

该课程是为开发人员制作的吗?是的。这就是它以 Unix 时间计算时间的原因,该时间从 1970 年初开始。

甚至可以说Instant类是类的简化版Date,只保留程序员需要的东西。

您可以使用Instant与获取对象完全相同的方式获取LocalTime对象:

Instant timestamp = Instant.now();

其中timestamp是一个Instant变量,是对类的静态方法的调用。Instant.now()now()Instant

例子:

代码 控制台输出
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

of()您还可以通过传递自 1970 年 1 月 1 日以来经过的时间,使用该方法的变体创建一个新对象:

ofEpochMilli(long milliseconds)
你需要传递毫秒数
ofEpochSecond(long seconds)
你需要传递秒数
ofEpochSecond(long seconds, long nanos)
你需要传递秒和纳秒

Instant对象可用的方法

Instant 类有两个返回其字段值的方法:

long getEpochSecond()
自 1970 年 1 月 1 日以来经过的秒数
int getNano()
纳秒。
long toEpochMilli()
自 1970 年 1 月 1 日以来经过的毫秒数

还有一些方法可以Instant根据现有对象创建新对象:

Instant plusSeconds(long)
将秒数添加到当前时间
Instant plusMillis(long)
添加毫秒
Instant plusNanos(long)
添加纳秒
Instant minusSeconds(long)
减秒
Instant minusMillis(long)
减去毫秒
Instant minusNanos(long)
减去纳秒

例子:

代码 控制台输出
Instant timestamp = Instant.now();
System.out.println(timestamp);

long n = timestamp.toEpochMilli();
Instant time = Instant.ofEpochMilli(n);
System.out.println(time);

2019-02-22T09:01:20.535344Z



2019-02-22T09:01:20.535Z

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION