找出发布的UTC时间戳与当前时间之间的差异(以分钟为单位)

时间:2017-08-17 06:17:40

标签: java date utc

我正在尝试做的事情:检查事件发生前的分钟数。 (我在中央时间,即UTC -5小时)。 我得到的对象是一个JSON元素,当我拿到字符串时,它看起来像这样:

/日期(1502964420000-0500)/

我应该能够:

//take the departure time and subtract it from the current time. Divide by 60
    timeStamp = timeStamp.substring(6,16);

这给了我1502964420,我可以使用时间转换器获取:2017年8月17日星期四上午5:07:00

问题是..如何以相同的格式获取当前时间来减去它? (或者,如果有更好的方法,我也很乐意接受这个建议。)

2 个答案:

答案 0 :(得分:1)

我建议您查看数据类型ZonedDateTime

通过这种方式,您可以轻松地执行这样的计算和转换:

ZonedDateTime startTime = ZonedDateTime.now();
Instant timestamp = startTime.toInstant(); // You can also convert to timestamp
ZonedDateTime endTime = startTime.plusSeconds(30);

Duration duration = Duration.between(startTime, endTime);

if(duration.isNegative()){
  // The end is before the start
}

long secondsBetween = duration.toMillis(); // duration between to seconds

由于您不了解ZonedDateTime,因此快速概述了如何将字符串转换为ZonedDateTime:

注意:字符串必须是ISO8601格式!

String example = "2017-08-17T09:14+02:00";
OffsetDateTime offset = OffsetDateTime.parse(example);
ZonedDateTime result = offset.atZoneSameInstant( ZoneId.systemDefault() );

答案 1 :(得分:0)

您可以使用Date currentDate = new Date()然后使用currentDate.getTime()来获取当前的Unix时间(以毫秒为单位),或使用Calendar - 类:Calendar currentDate = Calendar.getInstance()currentDate.getTime().getTime()来以毫秒为单位获取当前的Unix时间。

您可以对从json解析的日期执行相同操作,然后计算两个值之间的差异。要在几分钟内得到差异,只需将其除以(60 * 1000)