我对此错误感到惊讶: 我应该如何将时间戳字符串转换为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
为什么??
答案 0 :(得分:2)
正如页面所说,它将时间戳视为自1970年1月1日午夜以来的秒的数量。仅查看documentation告诉您new Timestamp
预计数量为毫 -seconds。因此将它乘以1000. Timestamp
也不太可能是您想要使用的类型:它是特定于SQL的。请改为考虑java.time.*
类型。
答案 1 :(得分:1)
java.sql.Timestamp
(java.util.Date
的子类)使用毫秒作为时间,而Unix时间戳计算秒数。如果你有一个Unix时间戳,你需要将它乘以1000(并除以1000以从Java日期获得Unix时间戳)。