举报投诉联系我们 手机版 热门标签 VUE中文网
您的位置:VUE中文网 > java 日期和时间 Java 日期和时间解析

java 日期和时间 Java 日期和时间解析

2023-03-10 14:17 Java教程

java 日期和时间 Java 日期和时间解析

java 日期和时间

Java 日期和时间是 Java 编程中的一个重要概念,它可以帮助我们更好地处理时间和日期。Java 提供了一系列的 API,可以用来处理时间和日期,这些 API 可以帮助我们轻松地处理各种时间和日期相关的操作。

Java 中的时间和日期 API 分为两大类:java.util.Date 和 java.time。java.util.Date 是 Java 的老版本 API,它提供了一些基本的方法来处理时间和日期。但是它存在一些不足之处,比如不能正确处理不同的时区、不能正确处理年份、不能正确处理小数部分等。

而 java.time 是 Java 8 中引入的新版 API,它提供了一套新的、高效的方法来处理时间和日期。它可以正确地处理不同的时区、年份、小数部分等信息,并支持国际化标准 ISO-8601。

// 获取当前 Date 对象 
Date date = new Date(); 
System.out.println(date); 
// 获取当前 LocalDateTime 对象 
LocalDateTime localDateTime = LocalDateTime.now(); 
System.out.println(localDateTime); 

Java 日期和时间解析

Java日期时间 - Java日期和时间解析


DateTimeFormatter 处理的解析是从字符串创建日期时间对象。

用于格式化的相同符号用作解析字符串值。

如果无法解析文本,则会抛出 DateTimeParseException 。它有两种方法来提供错误的详细信息。 getErrorIndex()返回文本中的错误偏移量。 getParsedString()返回正在解析的文本。

日期时间相关的类和DateTimeFormatter定义了将字符串解析为datetime对象的方法。

parse()方法从datetime类

每个datetime类有两个重载版本的 parse() parse()方法的返回类型与定义datetime类相同。

下面的代码显示了如何使用 parse()方法从 LocalDate 对象:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {

  public static void main(String[] args) {
    LocalDate ld1 = LocalDate.parse("2014-06-10");
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    LocalDate ld2 = LocalDate.parse("06/10/2014", formatter);

    System.out.println("ld1: " + ld1);
    System.out.println("ld2: " + ld2);
  }
}

上面的代码生成以下结果。


parse()从DateTimeFormatter类

DateTimeFormatter 包含几个将字符串解析为datetime对象的parse()方法。

它们中的大多数返回一个TemporalAccessor对象,您可以查询它以获取datetime组件。

您可以将TemporalAccessor对象传递给datetime类的from()方法,以获取特定的datetime对象。

以下代码显示如何使用DateTimeFormatter对象解析MM/dd /yyyy格式的字符串,以构造LocalDate:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;

public class Main {

  public static void main(String[] args) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    TemporalAccessor ta = formatter.parse("06/10/2014");
    LocalDate ld = LocalDate.from(ta);
    System.out.println(ld);

  }
}

上面的代码生成以下结果。


例子

parse()方法可以通过TemporalQuery将字符串直接解析为特定的datetime对象。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {

  public static void main(String[] args) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    LocalDate ld = formatter.parse("06/10/2014", LocalDate::from);
    System.out.println(ld);
  }
}

上面的代码生成以下结果。

Parse Best

DateTimeFormatter类包含一个parseBest()方法。

parseBest()方法尝试匹配与提供的格式的字符串可选格式符号。

在以下模式中,我们有两个可选模式。

yyyy-MM-dd["T"HH:mm:ss[Z]]

文本可以完全解析为OffsetDateTime,并部分解析为LocalDateTime和LocalDate。

以下代码显示如何使用可选模式从字符串获取最佳匹配日期时间对象。

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.time.temporal.TemporalAccessor;

public class Main {

  public static void main(String[] args) {
    DateTimeFormatter parser = DateTimeFormatter
        .ofPattern("yyyy-MM- dd["T"HH:mm:ss[Z]]");
    parseStr(parser, "2014-06-31");
    parseStr(parser, "2014-06-31T15:31:12");
    parseStr(parser, "2014-06-31T15:31:12-0500");
    parseStr(parser, "2014-06-31Hello");

  }

  public static void parseStr(DateTimeFormatter formatter, String text) {
    try {
      TemporalAccessor ta = formatter.parseBest(text, OffsetDateTime::from,
          LocalDateTime::from, LocalDate::from);
      if (ta instanceof OffsetDateTime) {
        OffsetDateTime odt = OffsetDateTime.from(ta);
        System.out.println("OffsetDateTime: " + odt);
      } else if (ta instanceof LocalDateTime) {
        LocalDateTime ldt = LocalDateTime.from(ta);
        System.out.println("LocalDateTime: " + ldt);
      } else if (ta instanceof LocalDate) {
        LocalDate ld = LocalDate.from(ta);
        System.out.println("LocalDate: " + ld);
      } else {
        System.out.println("Parsing returned: " + ta);
      }
    } catch (DateTimeParseException e) {
      System.out.println(e.getMessage());
    }
  }

}

上面的代码生成以下结果。

阅读全文
以上是VUE中文网为你收集整理的java 日期和时间 Java 日期和时间解析全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 VUE中文网 vue88.com 版权所有 联系我们