2017-01-31 2 views
-9

Я удивлен этой ошибкой: Как преобразовать строку timestamp в объект TimeStamp?Java/Scala - как преобразовать строку в длинную?

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 

почему ??

+1

Длинны не содержат десятичных знаков. – Carcigenicate

+1

И в следующий раз - не используйте скриншоты, скопируйте и вставьте код и исключение. Изображения не доступны для поиска, и они не помогают воспроизвести ошибку. –

+0

К какому классу следует отнести? Double не похоже на TimeStamp –

ответ

1

java.sql.Timestamp (подкласс java.util.Date) использует миллисекунды для времени, в то время как временная метка Unix подсчитывает секунды. Если у вас есть временная метка Unix, вам нужно умножить ее на 1000 (и делить на 1000, чтобы получить временную метку Unix с датой Java).

2

Как говорит страница, он считает метку времени, чтобы быть числом секунд с полуночи 1 января 1970 года Просто глядя на documentation говорит вам new Timestamp ожидает номер милли -seconds. Поэтому умножьте его на 1000. Timestamp также вряд ли будет типом, который вы хотите использовать: он специфичен для SQL. Рассмотрим вместо этого java.time.*.

Смежные вопросы