Java / Scala - 如何将字符串转换为long?

时间:2017-01-31 13:59:18

标签: string scala

我对此错误感到惊讶: 我应该如何将时间戳字符串转换为TimeStamp对象?

val a = new Timestamp( "1485783591".toDouble)
a
Out[157]:
Name: Unknown Error
Message: <console>:79: error: type mismatch;
 found   : Double
 required: Long
       val a = new Timestamp( "1485783591".toDouble)
                                           ^
StackTrace: 

修改

在这里查找当前时间戳:http://www.timestamp.fr/? 我得到了值1485783591 = 30/1/2017 14:39:51

但我的java程序没有:

val a = new Timestamp("1485783591".toLong)
a

输出:

=> 1970-01-18 04:43:03.591

为什么??

2 个答案:

答案 0 :(得分:2)

正如页面所说,它将时间戳视为自1970年1月1日午夜以来的的数量。仅查看documentation告诉您new Timestamp预计数量为 -seconds。因此将它乘以1000. Timestamp也不太可能是您想要使用的类型:它是特定于SQL的。请改为考虑java.time.*类型。

答案 1 :(得分:1)

java.sql.Timestampjava.util.Date的子类)使用毫秒作为时间,而Unix时间戳计算秒数。如果你有一个Unix时间戳,你需要将它乘以1000(并除以1000以从Java日期获得Unix时间戳)。