如何用当前时间减去时间

How to subtract time with current time

我指的是 this question 并试图在 Java 中获取给定时间和当前时间之间的时差。我输入的时间格式为 2018-07-26T16:00:17.163Z,我希望它与我当前在芝加哥的时间存在时差。我怎么做?这是我的片段

        val currTime  = System.currentTimeMillis()
        var strDate = timeStampToDateComverter(currTime)
        import java.text.SimpleDateFormat
        import java.util.Calendar
        val formatter_datetime = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

        import java.util.TimeZone
        formatter_datetime.setTimeZone(TimeZone.getTimeZone("America/Chicago"))
        val parsedTime2 = formatter_datetime.parse(strDate)

        var str1 =  "2018-07-26T16:00:17.163Z"

        val parsedTime1 = formatter_datetime.parse((str1.substring(0,str1.indexOfSlice("T")) + " " + str1.substring(str1.indexOfSlice("T")+1,str1.indexOfSlice("T")+9)))
        val dm = TimeUnit.MILLISECONDS.toMillis(new java.sql.Date(parsedTime2.getTime()).getTime()) - TimeUnit.MILLISECONDS.toMillis(new java.sql.Date(parsedTime1.getTime()).getTime())
        val seconds = dm / 1000
        val minutes = seconds / 60
        val hours = minutes / 60
        val days = hours / 24
        val weeks = days / 7
        val days_out = days % 7
        pipelineTotalExecutionTime = (weeks +"w "+ days_out + "d " + hours % 24 + "h " + minutes % 60 + "m")

这是我的 timeStampToDateComverter

def timeStampToDateComverter(i : Long) : String = {
    val dt = new Date(i)
    val sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss")
    sfd.format(dt)
  }

如果能提供代码片段,我们将不胜感激。谢谢。

时间差(以毫秒为单位)可以通过以下方式获得:

ChronoUnit.MILLIS
   .between(Instant.parse("2018-07-26T16:00:17.163Z"), Instant.now())

Instant.now() 将是当前的 UTC 时间,而您输入的日期是 UTC 时间,这使得差异变得合理。无论当前时区如何,差异都是一致的。
您可以相应地更改时间单位(例如ChronoUnit.HOURS)。

您可以像下面这样计算差异。

// Your date string
val dateStr    = "2018-07-26T16:00:17.163Z"
// Define the date format
val dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")    
// Set Chicago timezone    
dateFormat.setTimeZone(java.util.TimeZone.getTimeZone("America/Chicago"))

// Calculate the diff
val diff: Long = dateFormat.parse(dateStr).getTime() - System.currentTimeMillis()

此代码仅使用 Java 标准库。