Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java将字符串日期和字符串时间组合成单个即时日期时间?_Java_Datetime - Fatal编程技术网

如何使用Java将字符串日期和字符串时间组合成单个即时日期时间?

如何使用Java将字符串日期和字符串时间组合成单个即时日期时间?,java,datetime,Java,Datetime,我想将字符串日期(“19801115”)和字符串时间(“1530”)组合成一个即时日期时间 例如: 有两个字符串变量: String applicationDate = "19801115"; String applicationTime = "1530"; 并将它们组合到applicationDateTime(即时类型,例如:“1980-11-15T15:30:00Z”)。 我如何做到这一点?谢谢。如果不至少向我们展示一些代码,告诉我们这两个对象是如何表示的(它们是字符串吗?java.uti

我想将字符串日期(“19801115”)和字符串时间(“1530”)组合成一个即时日期时间

例如: 有两个字符串变量:

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*/);