如何检查给定的时间戳(以毫秒为单位)是Scala中的00:00 hh:mm?

时间:2017-02-21 07:09:08

标签: scala datetime time

我最近在Scala工作。我学习了一点Scala。

现在的问题是,我得到的时间戳以毫秒为单位,包含来自.csv文件的日期和时间。我必须逐个检查这些时间戳,如果时间戳是00:00(hh:mm),它应该排除。据我所知,我确实喜欢这个。

timestamp % 86400000(milliseconds for a day) == 0

检查是否正确?

2 个答案:

答案 0 :(得分:2)

您可以使用java.util.Calendarhttps://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html)执行此操作。

val ts = 123456789
val cal = Calendar.getInstance
cal.setTimeInMillis(ts)
if (cal.get(Calendar.HOUR_OF_DAY) == 0 && cal.get(Calendar.MINUTE) == 0)
    println("EXCLUDE")
else
    println("INCLUDE")

答案 1 :(得分:1)

如果您正在使用JDK 8,则可以使用新的Java Time API(受Joda-Time影响很大)。

考虑时区的可能方法如下:

import java.time.{Instant, ZoneId}
import java.time.zone.ZoneRulesException

@throws(classOf[ZoneRulesException])
def isAtMidnight(timestamp: Long, zone: String = "UTC"): Boolean = {
  val t = Instant.ofEpochMilli(timestamp).atZone(ZoneId.of(zone)).toLocalTime
  t.getHour == 0 && t.getMinute == 0
}