2017-01-31 1 views
-9

이 오류로 인해 놀랐습니다 : 타임 스탬프 문자열을 타임 스탬프 개체로 변환해야합니까? http://www.timestamp.fr/ :자바/스칼라 - 어떻게 문자열을 오래 변환 할 수 있습니까?

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: 

편집

여기에 현재의 타임 스탬프를 찾고 계십니까? 내가 값 1485783591 = 30/1/2017 14시 39분 51초

있어하지만 내 자바 프로그램이되지 않습니다

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

출력 :

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

왜?

+1

Long에는 십진수가 포함되지 않습니다. – Carcigenicate

+1

그리고 다음에 스크린 샷을 사용하지 말고 코드와 예외를 복사하여 붙여 넣으십시오. 이미지를 검색 할 수 없으며 오류를 재생산하는데도 도움이되지 않습니다. –

+0

캐스팅해야하는 클래스는 무엇입니까? Double이 TimeStamp에 의해 받아 들여지지 않는 것 같습니다. –

답변

1

java.sql.Timestamp (서브 클래스는 java.util.Date)은 Unix 타임 스탬프가 초로 계산되는 동안 시간 (밀리 초)을 사용합니다. 유닉스 타임 스탬프를 가지고 있다면 1000을 곱해야합니다. 그리고 Java Date로부터 유닉스 타임 스탬프를 얻기 위해 1000으로 나눕니다.

2

페이지가 말했듯이, 그것은 그냥 documentation보고 년 1 월 1 일 자정 1970 년부터 의 숫자로 타임 스탬프를 고려하면 new Timestamp밀리 -seconds의 수를 예상하고 알려줍니다. 따라서 1000을 곱하십시오. Timestamp은 사용하려는 유형이 아닐 수도 있습니다 (SQL에 고유합니다). 대신 java.time.* 유형을 고려하십시오.

관련 문제