如何用当前时间减去时间
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 标准库。
我指的是 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 标准库。