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

Kotlin/Java-如何将日期时间字符串转换为instant?

唐阳晖
2023-03-14

我试图创建一个即时从日期和时间字符串的实例。Date的格式如下yyyy-mm-dd。因此,这些值可以如下所示:

val date = "2021-11-25"
val time = "15:20"
val dateTime = "${date}T${time}:00"
val instantDateTime = ZonedDateTime.parse(dateTime, 
                                          DateTimeFormatter.ISO_OFFSET_DATE_TIME.withZone(defaultTimeZone)
                                         ).toInstant()
val instantDateTime = Instant.from(DateTimeFormatter .ISO_OFFSET_DATE_TIME.withZone(defaultTimeZone).parse(dateTime))
Exception in thread "main" java.time.format.DateTimeParseException: Text '2021-11-25T15:20:00' could not be parsed at index 19

共有1个答案

尉迟雅昶
2023-03-14

您可以组合日期和时间字符串以ISO 8601格式创建日期-时间字符串,您可以将其解析为LocalDateTime,然后使用适用的ZoneID将其转换为Instant。请注意,现代的日期-时间API是基于ISO 8601的,只要日期-时间字符串符合ISO 8601标准,就不需要显式地使用DateTimeFormatter对象。

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class Main {
    public static void main(String[] args) {
        String strDate = "2021-11-25";
        String strTime = "15:20";
        String strDateTime = strDate + "T" + strTime;
        LocalDateTime ldt = LocalDateTime.parse(strDateTime);
        Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
        System.out.println(instant);
    }
}

产出:

2021-11-25T15:20:00Z

联机演示

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;

public class Main {
    public static void main(String[] args) {
        String strDate = "2021-11-25";
        String strTime = "15:20";
        LocalDateTime ldt = LocalDateTime.of(LocalDate.parse(strDate), LocalTime.parse(strTime));
        Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
        System.out.println(instant);
    }
}

从trail:Date time了解更多关于现代日期时间API*的信息。检查这个答案和这个答案,了解如何将java.timeAPI与JDBC一起使用。

*如果您正在为一个Android项目工作,并且您的Android API级别仍然不符合Java-8,请通过desugaring检查Java8+API可用。注意,Android8.0 Oreo已经提供了对java.time的支持。

 类似资料:
  • 问题内容: 我在mysql中使用NOW()获取当前日期和时间。我想将日期值转换为varchar并将其与另一个字符串连接。我该怎么做? 问题答案: 使用DATE_FORMAT()

  • 问题内容: 例如字符串: 我将把它们推回到数据库中正确的日期时间字段中,因此我需要将它们魔术化为实际的日期时间对象。 这是通过Django的ORM进行的,因此我无法使用SQL进行插入时的转换。 问题答案: 是将字符串解析为日期时间的主要例程。它可以处理各种格式,格式由你为其指定的格式字符串确定: 生成的对象是时区未使用的。 链接: 适用于strptime:Python 2和Python 3的 Py

  • 问题内容: 我想在Java中将字符串Date转换为Timestamp。我写了以下代码。我声明date1的日期为:7-11-11 12:13:14。 我想将此字符串日期7-11-11 12:13:14转换为时间戳。现在我得到的输出是0007-11-11 00:13:14.000000 +05:30:00但我想要(7-11-11 12:13:14)这种格式的时间戳记日期。谁能帮帮我吗。谢谢。 问题答案

  • 问题内容: 将日期转换为JSON时,javascript会以以下格式保存日期: 但是,我不确定如何将其放入python datetime对象。我已经尝试过这些: 我相信javascript会将字符串保存为官方ISO格式,因此似乎应该有一种方法可以让python 读取它? 问题答案: 请尝试以下格式: 例如: 该的日期只是手段,它应该被解释为UTC时间,所以忽略它不会造成任何信息丢失。您可以在这里找

  • 问题内容: 我试图将字符串转换为日期时间对象。我从新闻提要中获取的字符串格式如下:“星期四,2014年10月16日美国东部时间01:16:17” 我尝试使用datetime.strptime()进行转换。即 并得到以下错误: 追溯(最近一次通话最近): 文件“”,第1行,位于datetime.strptime(’Thu,16 Oct 2014 01:16:17 EDT’,’%a,%d%b%Y%H:

  • 我有以下字符串: 我尝试用以下代码将此字符串转换为: Java . time . format . datetimeparseexception:无法解析文本“18/07/2019 04:30:00”:无法从TemporalAccessor获取LocalDateTime 我错过了什么?