java⽇期解析_Java⽇期和时间解析
⽇期时间 - Java⽇期和时间解析
由DateTimeFormatter处理的解析是从创建⽇期时间对象。
⽤于格式化的相同符号⽤作解析字符串值。
如果⽆法解析,则会抛出DateTimeParseException。它有两种⽅法来提供错误的详细信息。getErrorIndex()返回⽂本中的错误偏移量。getParsedString()返回正在解析的⽂本。
⽇期时间相关的类和DateTimeFormatter定义了将字符串解析为对象的⽅法。
parse()⽅法从datetime类
每个datetime类有两个重载版本的parse()。parse()⽅法的返回类型与定义datetime类相同。
下⾯的代码显⽰了如何使⽤parse()⽅法从LocalDate对象:import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class Main {undefined
public static void main([] args) {undefined
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 poral.TemporalAccessor;
public class Main {undefined
public static void main(String[] args) {undefined
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 {undefined
public static void main(String[] args) {undefined
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 poral.TemporalAccessor;
public class Main {undefined
public static void main(String[] args) {undefined
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");
java时间日期格式转换parseStr(parser, "2014-06-31Hello");
}
public static void parseStr(DateTimeFormatter formatter, String text) {undefined try {undefined
TemporalAccessor ta = formatter.parseBest(text, OffsetDateTime::from, LocalDateTime::from, LocalDate::from);
if (ta instanceof OffsetDateTime) {undefined
OffsetDateTime odt = OffsetDateTime.from(ta);
System.out.println("OffsetDateTime: " + odt);
} else if (ta instanceof LocalDateTime) {undefined
LocalDateTime ldt = LocalDateTime.from(ta);
System.out.println("LocalDateTime: " + ldt);
} else if (ta instanceof LocalDate) {undefined
LocalDate ld = LocalDate.from(ta);
System.out.println("LocalDate: " + ld);
} else {undefined
System.out.println("Parsing returned: " + ta);
}
} catch (DateTimeParseException e) {undefined
System.out.Message());
}
}
}
上⾯的代码⽣成以下结果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。