如何增加我的时间

时间:2016-06-05 05:48:35

标签: java datetime

我有以下格式的时间,

String from ="2015.08.31T16:00:00.000Z";

是否可以为此时间格式添加8小时?

4 个答案:

答案 0 :(得分:0)

Write a parser, read the data, create a date object,无论您喜欢什么,都可以继续使用它。没有我所知道的真正的捷径,这种或那种方式需要将字符串转换为时间数据。

答案 1 :(得分:0)

正如您在评论中所看到的,该过程分为3个阶段:

String from ="2015.08.31T16:00:00.000Z";

//conver date string to Date
SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd'T'HH:mm:ss.SSS'Z'");
Date parsedDate = formatter.parse(from);
System.out.println(parsedDate);    // test output

//add 8 hours 
Calendar calendar = Calendar.getInstance();
calendar.setTime(parsedDate);
calendar.add(Calendar.HOUR, 8);
Date newTime = calendar.getTime();

//convert to original format
String to = formatter.format(newTime);
System.out.println(to);

答案 2 :(得分:0)

您使用的是非标准日期格式,因此您需要自定义模式:

DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy.MM.dd'T'HH:mm:ss.SSSX");

如果你想调整时间,保持相同的区域偏移(UTC + 0,如末尾的“Z”所示),你可以这样做:

OffsetDateTime offsetDateTimeUTC = OffsetDateTime.parse("2015.08.31T16:00:00.000Z", pattern);
OffsetDateTime plus8hours = offsetDateTimeUTC.plusHours(8);

要将其恢复为String格式,您可以使用相同的模式:

String newTime = plus8hours.format(pattern);

这将是"2015.09.01T00:00:00.000Z"

如果你想调整区域偏移量而不是小时数,你可以这样做:

OffsetDateTime plus8zones = offsetDateTimeUTC.withOffsetSameLocal(ZoneOffset.ofHours(-8))

如果格式化为格式,则为"2015.08.31T16:00:00.000-08",即时间相同,但调整了区域偏移而不是当地时间。

答案 3 :(得分:0)

使用DateTimeFormatter.ofPattern("yyyy.MM.dd'T'HH:mm:ss.SSSX");创建格式化程序 然后你可以使用ZonedDateTime.parse和ZonedDateTime.format。

Online Java compiler IDE

的完整代码