标签: java.time.instant

如何在Java中初始化Instant

如何初始化即时类型?

我试过这个:

Instant instant = new Instant();
Run Code Online (Sandbox Code Playgroud)

但是不起作用..

我需要它,因为在Freemarker之后我必须这样做:

[#assign dateFormated = newDate.from(instant.ofEpochSecond(data.time.seconds))/]
Run Code Online (Sandbox Code Playgroud)

java freemarker date java.time.instant

1
推荐指数
1
解决办法
1522
查看次数

为什么 Java 8 Instant.now() 在我的本地服务器上显示错误的 UTC?

Java8Instant.now()给出的当前时间已经采用 UTC 格式。我在CompileJava.net上创建了一个简单的沙箱测试来验证我的预期结果:

Timestamp createdDateUtc = Timestamp.from(Instant.now());
System.out.println(createdDateUtc);

LocalDateTime databaseUtcLocal = createdDateUtc.toLocalDateTime();
ZonedDateTime databaseUtcZoned = databaseUtcLocal.atZone(ZoneId.of("UTC"));
ZonedDateTime userTimezoneTime = databaseUtcZoned.withZoneSameInstant(ZoneId.of("Asia/Qatar")); 
System.out.println(userTimezoneTime.format(DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm:ss a")));
Run Code Online (Sandbox Code Playgroud)

注意:当前时间为 2018 年 12 月 1 日上午 11:16 UTC。

当我在在线编译器上运行此代码时,我得到输出:

2018-12-01 11:17:43.637
12/01/2018 02:17:43 PM
Run Code Online (Sandbox Code Playgroud)

但是当我在本地 JBOSS 服务器上运行此代码时,我得到以下输出:

2018-12-01 03:18:07.464
12/01/2018 06:18:07 AM
Run Code Online (Sandbox Code Playgroud)

这里可能出了什么问题?我的服务器 UTC 时钟是否不正确?我的本地服务器的物理位置位于加利福尼亚州。虽然这并不重要,但当我尝试使用Instant.now()太平洋时间来显示 UTC 时间时,这似乎很奇怪。

非常感谢任何帮助!

更新

正如已接受的答案所指出的,问题是我的Timestamp.from()方法:

System.out.println(Instant.now());
System.out.println(Timestamp.from(Instant.now()));
Run Code Online (Sandbox Code Playgroud)

输出:

2018-12-01T11:48:33.153Z
2018-12-01 03:48:33.171
Run Code Online (Sandbox Code Playgroud)

所以现在我的问题发生了变化。如果你有类似的问题,我在这里找到了 Stack Overflow 上的答案。我没有Timestamp.from(Instant.now())使用这个丑陋的混乱:

Timestamp.valueOf(ZonedDateTime.of(LocalDateTime.now(), ZoneId.systemDefault()).withZoneSameInstant(ZoneId.of("UTC")).toLocalDateTime())
Run Code Online (Sandbox Code Playgroud)

java time utc server java.time.instant

1
推荐指数
1
解决办法
1万
查看次数

postgresql Date 与 java Instant

假设我在 Java 应用程序中有一个类型为 的字段Instant,并将其作为类型存储在 PostgreSQL 数据库中DATE

例如,如果我保存,21.02.2019 14:03:59它将被存储为21.02.2019,但是当我从数据库读取时,它将如何重新翻译?

那将会:

  • 21.02.2019 00:00:00.000或者
  • 21.02.2019 23:59:59.000

附言。我知道我应该使用Timestamp:)

java postgresql date java.time.instant

1
推荐指数
1
解决办法
4651
查看次数

java.time.Instant - 解析大日期时出错

我试图使用 Instant.parse 方法解析一个非常大的日期(但仍然小于 Instant.MAX),但出现错误。

String input = "78000000-01-01T00:00:00Z";
Instant instant = Instant.parse(input);
Run Code Online (Sandbox Code Playgroud)

例外:

Exception in thread "main" java.time.format.DateTimeParseException: Text '78000000-01-01T00:00:00Z' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2106)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:2008)
at java.base/java.time.Instant.parse(Instant.java:399)
Run Code Online (Sandbox Code Playgroud)

BC 日期“-78000000-01-01T00:00:00Z”已解析正常。

我是否发现了 Java 中的错误:)?

java java-time java.time.instant

1
推荐指数
1
解决办法
190
查看次数

从Instant.now()生成的日期中提取日期,小时和分钟

我有这段代码可以生成日期和时间,

ZoneId z = ZoneId.of( "Africa/Nairobi" );

Instant instant = Instant.now();

ZonedDateTime zdt = instant.atZone(z);

return zdt.toString();

//2018-03-19T09:03:22.858+03:00[Africa/Nairobi]
Run Code Online (Sandbox Code Playgroud)

是否有类似chrono的库-https: //docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoField.html字段,我可以用来获取日期,小时和分钟?

时间字段不会提取完整日期。

java datetime hour zoneddatetime java.time.instant

0
推荐指数
1
解决办法
4359
查看次数

Instant.toEpochMilli()可以用作唯一id吗?

我必须生成一个唯一的 ID,该 ID 也是可读的,因此不能使用 UUID。所以我想到了使用Instant.toEpochMilli()。可以用作唯一ID吗?

java uniqueidentifier java.time.instant

0
推荐指数
1
解决办法
1432
查看次数

从 Instant.now() 获取当前的小时和分钟

考虑下面的代码

Instant instant = Instant.now();
System.out.println(instant);
Run Code Online (Sandbox Code Playgroud)

结果:

2020-01-13T09:01:06.405Z
Run Code Online (Sandbox Code Playgroud)

现在从上面的结果我想得到当前的小时和当前的分钟。

java java-time java.time.instant

-5
推荐指数
1
解决办法
5653
查看次数