以秒为单位转换 HH:mm:ss

ulr*_*ich 5 scala apache-spark

我使用以下脚本从 yyyy-MM-dd HH:mm:ss 日期格式中提取 HH:mm:ss

import java.sql.Time

case class Transactions(creationTime: Time)

val formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

def parseTransac(line: String): (Transactions) = {
   val fields = line.split(',')
   val creationTime = new Time(formatter.parse(fields(0)).getTime())
   val transactions = Transactions(creationTime)
   (transactions)
}
Run Code Online (Sandbox Code Playgroud)

例如2009-01-15 15:45:23将返回15:45:23.

如何以秒为单位(56723)而不是 HH:mm:ss 获得结果

ulr*_*ich 2

根据 Jesper 的建议,解决方案如下:

import java.sql.Time    

case class Transactions(creationSeconds: Int )

val formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

def parseTransac(line: String): (Transactions) = {
   val fields = line.split(',')
   val fullDateTime = new Time(formatter.parse(fields(0)).getTime())
   val creationTime = fullDateTime.toString.split(':')
   val creationSeconds = creationTime(0).toInt*3600 + creationTime(1).toInt*60 + creationTime(2).toInt
   val transactions = Transactions(creationSeconds)
   (transactions)
}
Run Code Online (Sandbox Code Playgroud)

这是基于 Dipankar 提示的另一个解决方案:

import java.sql.Time
import org.joda.time.DateTime

case class Transactions(creationTime: Int)

val formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

def parseTransac(line: String): (Transactions) = {
   val fields = line.split(',')
   val fullDatTime = new DateTime(formatter.parse(fields(0)).getTime())
   val fromMidnight = fullDatTime.withTimeAtStartOfDay()
   val duration = new Duration(fromMidnight, fullDatTime)
   val creationTime = duration.toStandardSeconds().getSeconds()
   val transactions = Transactions(creationTime)
   (transactions)
}
Run Code Online (Sandbox Code Playgroud)