我有Java时间1380822000000
。我想转换成我能读到的东西:
import java.util.Date
object Ws1 {
val a = new Date("1380822000000").toString()
}
导致异常
warning: there were 1 deprecation warning(s); re-run with -deprecation for detai
ls
java.lang.IllegalArgumentException
at java.util.Date.parse(Date.java:615)
at java.util.Date.<init>(Date.java:272)
at .<init>(<console>:9)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:734)
at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983)
at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:573)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:604)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568)
at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:745)
at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:790)
at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:702)
at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:566)
at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:573)
at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:576)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scal
a:867)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:822)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:822)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.
scala:135)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
at org.jetbrains.plugins.scala.worksheet.WorksheetRunner.main(WorksheetRunner.j
ava:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
如何将其转换为正常的人类表示?
答案 0 :(得分:6)
您应该将该数字作为长整数传递以获得所需的结果,可以传递字符串,但该字符串应该是可解析的。
val a = new Date(1380822000000L).toString();
查看reference了解更多信息。
答案 1 :(得分:5)
或者做得更好并使用org.jodatime
;
import org.joda.time.DateTime;
val timestamp = new DateTime(1380822000000L);
你可以看到here,自EPOCH已经实施以来已经过了几毫秒。
答案 2 :(得分:4)
您收到一条警告:
警告:有1个弃用警告;
因为new Date(String)
已被弃用。
其次,new Date("1380822000000")
无效String
无法转换为date
,因为它位于milli seconds
long
值。
你必须这样做
vav a= new Date(1380822000000L).toString();
答案 3 :(得分:0)
示例,Java语法。
在UTC中:
Instant.ofEpochMilli( Long.parseLong( "1380822000000" ) )
.toString()
2013-10-03T17:40:00Z
在特定时区:
Instant.ofEpochMilli( Long.parseLong( "1380822000000" ) )
.atZone( ZoneId.of( "America/Montreal" ) )
.toString()
2013-10-03T13:40:00-04:00 [美国/蒙特利尔]
本地化:
Instant.ofEpochMilli( Long.parseLong( "1380822000000" ) )
.atZone( ZoneId.of( "America/Montreal" )
.format( DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH )
)
&GT;
与旧版本Java捆绑在一起的臭名昭着的java.util.Date/.Calendar类现在已被Java 8及更高版本中内置的新java.time框架所取代。
Instant代表时间轴上的一个时刻。 ZonedDateTime为Instant分配时区。
请注意,java.time的分辨率为纳秒,而早期的框架的粒度为毫秒。为方便起见,您将在下面看到方法ofEpochMilli
,但java.time不限于毫秒。
Instant instant = Instant.ofEpochMilli( 1380822000000L ) ; // Note the "L" on the long integer literal.
如果输入是String,则解析为long
整数值。请参阅Long.parseLong
静态方法。
Instant instant = Instant.ofEpochMilli( Long.parseLong( "1380822000000" ) ) ;
您可以调整到特定时区。
ZoneId zone = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atZone( zone );
ZonedDateTime的toString
方法将以ISO 8601标准的格式生成日期时间值的字符串表示。在“formatter”中搜索StackOverflow以了解如何生成其他字符串。