我有以下格式的时间,
String from ="2015.08.31T16:00:00.000Z";
是否可以为此时间格式添加8小时?
答案 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。