は私がJavaのSimpleDateFormatの解析ミリフォーマットエラー
import java.text.SimpleDateFormat
import scala.util.Try
object TimeParse extends App {
val raw = "2016-06-08T10:27:17.369000000000Z"
private def parseDate(inputdate: String) = {
val fromUser = new SimpleDateFormat("""yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSSSS'Z'""")
val myFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
Try(myFormat.format(fromUser.parse(inputdate)))
}
val r = parseDate(raw)
println("r - " + r)
}
しかし出力で、文字列データに"2016-06-08T10:27:17.369000000000Z"
を解析する:
r - Success(2016年06月04日 04:27:29)
私はミリ秒のフォーマットを削除した場合、それが正しいだろう、このよう:
object TimeParse extends App {
val raw = "2016-06-08T10:27:17Z"
private def parseDate(inputdate: String) = {
val fromUser = new SimpleDateFormat("""yyyy-MM-dd'T'HH:mm:ss'Z'""")
val myFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
Try(myFormat.format(fromUser.parse(inputdate)))
}
val r = parseDate(raw)
println("r - " + r)
}
出力:
r - Success(2016年06月08日 10:27:17)
なぜmillisecondに失敗したのでしょうか?
私は突然369_000_000_000が-367_187_456に切り捨てできない方法にヒット? – LoranceChen
@LoranceChen SimpleDateFormatはこの数値をlong値として読み込み、それをintにキャストします( '-367187456'を出力する' System.out.println((int)369_000_000_000L); 'のようなものです) –