【问题标题】:Scala - Unit doesn't conform to expected type Long (java sql timestamp)Scala - 单元不符合预期的 Long 类型(java sql 时间戳)
【发布时间】:2018-07-20 05:54:44
【问题描述】:

我是 Scala 的新手,我一直在尝试将 JSON 字符串解析为时间戳(长类型)。我不断收到以下错误“单位不符合预期的 Long 类型”,我不知道为什么

    import java.sql.Timestamp
    import java.text.SimpleDateFormat
    import java.util.Date

    val dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    var timestamp: Timestamp = new Timestamp(0)
    var parsedDate: Date = new Date()
    var dateString: String = ""
    var timestampLong: Long = 0

    def extractAscendingTimestamp(element: String): Long = {

       implicit val formats = org.json4s.DefaultFormats
       dateString = parse(element).extract[SheetFedRecord].begin

       try {
           parsedDate = dateFormat.parse(dateString)
           timestamp = new Timestamp(parsedDate.getTime)
           timestampLong = timestamp.getTime.asInstanceOf[Long]
       }
      catch {
           case e: Exception => 0.asInstanceOf[Long]
       }
    }

在 try 和 catch 中,我都给方法一个“长”变量来返回。有人可以帮忙吗?

【问题讨论】:

  • 尽可能使用 val 而不是 var。据我了解您的逻辑 parsedDate,dateString 可以是函数 extractAscendingTimestamp 内的 val。 timestampLong 不是必需的,您可以只返回最后一条语句 timestamp.getTime.asInstanceOf[Long]
  • 在这种情况下,Scala 不鼓励使用 var 套件

标签: scala timestamp


【解决方案1】:

yout try catch 中的最后一条语句应该是

timestamp.getTime.asInstanceOf[Long]

而不是

timestampLong = timestamp.getTime.asInstanceOf[Long]

如果你还想修改timestampLong变量,那么你try catch中的最后一条语句应该变成这两行:

timestampLong = timestamp.getTime.asInstanceOf[Long]
timestampLong

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多