当前位置: 首页 > 知识库问答 >
问题:

将java.time.instant转换为没有区域偏移量的java.sql.timestamp

羊舌兴文
2023-03-14
Instant now = Instant.now();
Timestamp current = Timestamp.from(now);

当我这样创作的时候:

LocalDateTime ldt = LocalDateTime.ofInstant(Instant.now(), ZoneOffset.UTC);
Timestamp current = Timestamp.valueOf(ldt);

一切都工作得很好,但我尽量避免转换。是否可以通过只使用instant对象来实现这一点?

共有1个答案

都乐逸
2023-03-14

我把电脑的时区改为欧洲/布加勒斯特做实验。这是UTC+2小时,就像你的时区一样。

现在,当我复制您的代码时,我得到了一个类似于您的结果:

    Instant now = Instant.now();
    System.out.println(now); // prints 2017-03-14T06:16:32.621Z
    Timestamp current = Timestamp.from(now);
    System.out.println(current); // 2017-03-14 08:16:32.621

输出在注释中给出。然而,我继续说:

    DateFormat df = DateFormat.getDateTimeInstance();
    df.setTimeZone(TimeZone.getTimeZone("UTC"));
    // the following prints: Timestamp in UTC: 14-03-2017 06:16:32
    System.out.println("Timestamp in UTC: " + df.format(current));
    LocalDateTime ldt = LocalDateTime.ofInstant(Instant.now(), ZoneOffset.UTC);
    System.out.println(ldt); // 2017-03-14T06:16:32.819
    current = Timestamp.valueOf(ldt);
    System.out.println(current); // 2017-03-14 06:16:32.819
    System.out.println("Timestamp in UTC: " + df.format(current)); // 14-03-2017 04:16:32
 类似资料:
  • 问题内容: 在我正在开发的应用程序中,我需要将object 转换为。当我创建对象时: 我收到类似的东西。当我尝试创建这样的对象时: 我收到类似的东西。相同的结果,但有2个小时的延迟。有人可以解释为什么会发生这种情况,并在不造成延迟的情况下为我提供解决此问题的答案吗? 当我这样创建时: 一切正常。但是我尽量避免转换。有没有一种方法可以只使用对象呢? 问题答案: 我将计算机的时区更改为欧洲/布加勒斯特

  • 我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。

  • 问题内容: 我需要在查询中将DATE值转换为带时区的TIMESTAMP,但目前我正在获取不能被EF使用的时区(欧洲/巴黎)。 例如,执行此操作时: 我目前得到此输出: 但我需要像这样: 任何想法如何做到这一点? 问题答案: 您可以将转换为,然后使用将此时间戳转换为具有时区的时间戳:

  • 问题内容: 为您准备的头抓板。 我正在从IPInfoDB的API中获取地理IP数据,它从UTC返回 包括 DST 的时区偏移(如果当前已反映)。 例如,我住在EST(-5),目前是DST,因此geo IP API返回()作为偏移量。 因为DST令人头疼,所以这太好了。但是令我惊讶的是,它又引起了头疼。 我将此数据加载到PHP中,以通过AJAX传递给应用程序。我想在应用程序上获取IP地址的实时本地时

  • 我需要将查询中的日期值转换为带有时区的时间戳,但目前我得到的时区区域(“欧洲/巴黎”)是EF使用的无效区域。 例如,在执行此操作时:

  • 我试图弄清楚如何将LocalDateTime转换为偏移量为0的Date对象。 我使用的将LocalDateTime转换为日期的当前代码是: LocalDateTime: 转换到日期后: 是的,我看到有一个区域偏移量被传递到Instant中,但我不确定如何做我所要求的。