如何使用Java将字符串日期和字符串时间组合成单个即时日期时间?
我想将字符串日期(“19801115”)和字符串时间(“1530”)组合成一个即时日期时间 例如: 有两个字符串变量:如何使用Java将字符串日期和字符串时间组合成单个即时日期时间?,java,datetime,Java,Datetime,我想将字符串日期(“19801115”)和字符串时间(“1530”)组合成一个即时日期时间 例如: 有两个字符串变量: String applicationDate = "19801115"; String applicationTime = "1530"; 并将它们组合到applicationDateTime(即时类型,例如:“1980-11-15T15:30:00Z”)。 我如何做到这一点?谢谢。如果不至少向我们展示一些代码,告诉我们这两个对象是如何表示的(它们是字符串吗?java.uti
String applicationDate = "19801115";
String applicationTime = "1530";
并将它们组合到applicationDateTime
(即时类型,例如:“1980-11-15T15:30:00Z”)。
我如何做到这一点?谢谢。如果不至少向我们展示一些代码,告诉我们这两个对象是如何表示的(它们是字符串吗?java.util.date?java.time对象?),那么根本不可能回答。@OhGodspider,对不起,谢谢你的反馈,我会把我的问题说得更清楚。这两个都不是“瞬间”;看起来你有一个
LocalDate
和LocalTime
,它需要一个时区来转换成瞬间。也许在这里,类比类更合适,而不是类SimpleDateFormat
?请不要教年轻人使用过时且臭名昭著的SimpleDateFormat
类。至少不是第一个选择。而且不是毫无保留的。今天,我们在及其DateTimeFormatter
中有了更好的功能。添加了DateTimeFormatter
String dateString = "19801115";
String timeString = "1530";
Date date = null;
try {
date = new SimpleDateFormat("yyyyMMddhhmm").parse(dateString + timeString);
} catch (ParseException e) {
e.printStackTrace();
}
Instant reqInstant = date.toInstant();
System.out.println(reqInstant); // time here depends on your local settings, may differ from 15:30
// this way you adjust an Instant to a time zone you need
ZonedDateTime zdt = ZonedDateTime.ofInstant(reqInstant, ZoneId.systemDefault() /*<- needed time zone here*/);
System.out.println(zdt.toInstant()/*returns an Instant*/);
String dateString = "19801115";
String timeString = "1530";
DateTimeFormatter dtf = new DateTimeFormatterBuilder()
.appendPattern("yyyyMMddHHmm")
.toFormatter()
.withZone(ZoneId.systemDefault() /*<- needed time zone here*/);
ZonedDateTime zdtOriginal = ZonedDateTime.parse(dateString + timeString, dtf);
System.out.println(zdtOriginal.toInstant()/*returns an Instant*/);
// this way you adjust an Instant to a time zone you need
ZonedDateTime zdt = zdtOriginal.withZoneSameLocal(ZoneId.of("GMT") /*<- needed time zone here*/);
System.out.println(zdt.toInstant()/*returns an Instant*/);