有没有办法将编年史队列中的某个周期转换为时间戳?我检查了 4.5 apidocs 并没有找到任何东西。
问问题
284 次
3 回答
3
周期数是自纪元以来的天数(或小时数)。如果您的纪元为 0,则时间戳为
Date date = new Date(TimeUnit.DAYS.toMillis(cycle));
你可以做相反的事情
long cycle = TimeUnit.MILLIS(System.currentTimeMillis()).toDays()
如果你有一个小时周期,你可以用上面的小时代替天。
使用内置函数,您可以对任何滚动周期执行此操作。
int cycle = rollCycle.current(() -> time, epoch);
于 2017-03-01T10:43:49.097 回答
2
给定一个循环数,您可以执行以下操作(Kotlin):
fun rollCycleToTimestamp(cycle: Long) = Instant.ofEpochMilli(rollingCycle.lengthInMillis() * cycle)
每个滚动周期类型都有它自己的“lengthInMillis”,所以如果你将它乘以周期数,你会得到毫秒格式的纪元时间。
这也是任何滚动循环类型的通用解决方案。
于 2021-02-11T16:06:18.937 回答
1
用 1 个字回答你的问题,“不”是不可能的,但是值得知道这一点。如果您使用默认设置,即每日滚动,则编年史队列将每天为其数据创建一个新的队列文件。周期数与文件的日期直接相关(但与时间无关)。注意:从周期数计算当天必须考虑到编年史队列中设置的EPOCH时间。如果这种粒度级别足够(换句话说,您想要哪一天而不是那一天的时间),那么上面 Peter 的帖子会告诉您如何从周期数中获取日期。还有其他方法可以查明何时写入不使用循环编号的条目。如果您希望我介绍这些其他方式,请告诉我。
于 2017-03-01T10:53:59.827 回答