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

如何转换java。util。日期到java。时间LocalDate和保留日期/时间

卢志行
2023-03-14

我正在尝试转换java。util。日期至java。时间本地日期:

[java.util.Date instance].toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

但是,当[java.util.Date实例]有例如22:25的一天时间时,我选择ZoneId,例如:ZoneId.of("Asia/Sing")

即将推出的本地日期将有不同的日期(因为该区域增加了6小时),例如欧洲/明斯克:

printing java.util.Date: Thu Mar 04 22:25:00 CET 2021
printing converted java.util.Date to java.time.LocalDate with Europe/Minsk: 2021-03-04
printing converted java.util.Date to java.time.LocalDate with Asia/Singapore: 2021-03-05

我想在结果的LocalDate中保留与该实例相同的日期。一些方法如何解决这个问题?我想可能有几种方法。

共有3个答案

梁丘宏硕
2023-03-14

您可以简单地将Date的值复制到LocalDate而无需转换数据

LocalDate.of(date.getYear(), date.getMonth()+1, date.getDate());
云项禹
2023-03-14

Instant始终以UTC为单位提供日期时间,如果要保持相同的日期,需要使用UTC的区域偏移量。

演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        String strDateTime = "10/02/2021 22:25";
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH);
        Date date = sdf.parse(strDateTime);
        Instant instant = date.toInstant();
        ZonedDateTime zdt = instant.atZone(ZoneOffset.UTC);
        LocalDate localDate = zdt.toLocalDate();
        System.out.println(localDate);
    }
}

输出:

2021-10-02

从Trail:date-time了解有关现代日期时间API的更多信息。

java。utildate-time API及其格式化API、SimpleDataFormat已经过时且容易出错。建议完全停止使用它们,并切换到现代日期时间API。无论出于何种原因,如果您必须坚持使用Java 6或Java 7,那么您可以使用三个后端端口,这三个后端端口支持大部分Java。Java 6的时间功能

翟京
2023-03-14

您可以将其转换为即时,将时区设置为UTC,因为java.util.Date使用UTC。

public static LocalDate convert (Date date) {
    return date.toInstant()
      .atZone(ZoneId.of("UTC"))
      .toLocalDate();
}
 类似资料:
  • 问题内容: 我有一个日期时间格式的字段,当日期更好并且与数据库的其余部分更一致时,我想进行转换。无论如何,时间部分都是00:00:00。 如何在MySQL中做到这一点? 谢谢。 问题答案: 如果要在-Statement中使用,请使用运算符: 如果要在结构上更改表,只需将数据类型更改为(当然,只有在不影响依赖于此字段的应用程序的情况下,才这样做)。 两者都将消除时间部分。

  • 我正在尝试将java Date转换为java LocalTime,我的代码如下所示 当我打印对话前后的日期时,看起来是这样的: 它看起来像是在向后转换,但我不知道怎么做!

  • 我正在尝试将日期插入我的PostgreSQL数据库。以下是我在java应用程序中解析日期的方式: 在我的PostgreSQL数据库中。我将其作为带有时区的。处理和插入它的理想方式是什么? 数据库期望的示例。

  • 在Java中获取计数后,如何将“时间戳”转换为? 我目前的代码如下: 这里我得到的输出是2012-08-07 0,但是等效查询返回3。为什么我得到0?

  • 本文向大家介绍Java日期时间以及日期相互转换,包括了Java日期时间以及日期相互转换的使用技巧和注意事项,需要的朋友参考一下 Java日期时间,以及相互转化,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我有一个日期时间,格式为2019年4月30日星期二16:00:00 0800,这是RFC 2822格式的日期 我需要将其转换为日期时间0800中的给定时区 如果我总结一下, 如何在Java中实现这一点?我已经尝试了下面的代码,但它给出的时间比当前时间短08小时,即