我正在尝试做的事情:检查事件发生前的分钟数。 (我在中央时间,即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
问题是..如何以相同的格式获取当前时间来减去它? (或者,如果有更好的方法,我也很乐意接受这个建议。)
答案 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)