将时间戳解析为scala中我想要的格式

时间:2015-08-07 05:30:55

标签: java scala timestamp

我在下面有这样的话:

scala> val format = new java.text.SimpleDateFormat("yyyyMMddHHmmss")
format: java.text.SimpleDateFormat = java.text.SimpleDateFormat@5069d960

scala> format.format(new java.util.Date())
res3: String = 20150807135758

我想将 yyMMddhhmmss 更改为时间戳,但是当toString转到时间戳时,我会得到一个错误

scala> val newDate = format.subString(2, 11)
<console>:10: error: value subString is not a member of    java.text.SimpleDateForm
at
   val newDate = format.subString(2, 11)
                        ^

我可以看到这可以改为String:

scala> val newDate = format.toString()
newDate: String = java.text.SimpleDateFormat@5069d960

scala> newDate
res7: String = java.text.SimpleDateFormat@5069d960

scala> newDate.substring(2, 11)
res8: String = va.text.S

但它并没有真正打印出我想要的方式。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

致电substring()返回String而不是format(Date)对象format上的SimpleDateFormat

format.format(new java.util.Date()).substring(2, 11)

更好的是,您只需将模式更改为:

val format = new java.text.SimpleDateFormat("yyMMddHHmmss")
format.format(new java.util.Date())

150807143842中的结果。

在您的示例中,formatjava.text.SimpleDateFormat类型的实例。当您在其上调用toString()时,它将返回类java.text.SimpleDateFormat@的名称以及描述此实例的JVM生成的数字。这是Java(和Scala)中的默认toString()行为,除非类重写toString()

答案 1 :(得分:0)

这个有效:

scala> val format = new java.text.SimpleDateFormat("yyyyMMddHHmmss")
format: java.text.SimpleDateFormat = java.text.SimpleDateFormat@5069d960

scala> format.toPattern.substring(2, 11)
res5: String = yyMMddHHm