在没有java类的情况下获取Scala中的当前日期

时间:2018-01-31 04:03:49

标签: scala

有没有办法在不使用Java类import java.text.SimpleDateFormatimport java.util.Date的情况下在Scala中获取当前日期?

3 个答案:

答案 0 :(得分:4)

java.time

您不应导入java.text.SimpleDateFormatjava.util.Date。那些麻烦的旧类现在已经遗留下来,取而代之的是 java.time 类。

虽然我不知道Scala语法,但这里是Java语法。

java.time.Instant.now()  // Current moment in UTC, with a resolution of nanoseconds.

...和...

java.time.ZonedDateTime.now( ZoneId.of( "Africa/Tunis" ) )  // Current moment adjusted to the wall-clock time as used by the people in a particular region (time zone).

...和...

java.time.LocalDate.now( ZoneId.of( "Pacific/Auckland" ) )  // Current date (date-only, no time-of-day nor zone) of the people in a particular region (time zone).

答案 1 :(得分:1)

http://pavkin.ru/cross-platform-polymorphic-datetime-values-in-scala-with-type-classes/

  

目标   没有目标就没有解决方案。精确的目标也将为本文中的推理提供正确的背景。所以让我说明一下。

     

我的主要目标是能够编写跨日期/时间值的跨平台代码,并支持全时区。

     

这也意味着我需要在JVM和浏览器中表现一致的实现。我们是Scala程序员,所以让我们选择JVM行为语义作为我们的第二个目标。

本文探讨的选项是

  

https://github.com/scala-js/scala-js-java-time

     

此库是跨平台日期/时间代码的未来。它实际上是Java 8时间,从头开始为ScalaJS编写。

     

在撰写本文时,scala-js-java-time已经提供了LocalTime,LocalDate,Duration和一些其他真正有用的java.time。*类(这里有完整列表)。

     

https://github.com/soc/scala-java-time

     

Scala Java-Time是ThreeTen backport项目的一个分支。所以它的主要目的是在Java 6和Java 6上提供类似java.time。*的功能。 7。

     

它也被编译为ScalaJS,这意味着我们可以用它编写跨平台代码。我们甚至可以使用(在某种程度上)LocalDateTime!

     

https://github.com/mdedetrich/soda-time

     

苏打时间是Joda到ScalaJS的一个端口。

     

它处于早期开发阶段,并且在ScalaJS中也没有时区,但我仍然将它添加到列表中,因为开发人员采用了一种有趣的方法:他们正在使用ScalaGen转换原始的Joda代码。

然后作者建议在撰写本文时(2016年11月11日发布)

  

没有全时区支持的跨平台库。而对于JavaScript运行时,只有MomentJS,它真的符合我们的要求。

因此,除非其中一个已经进化,或者您只需要一个日期时间函数的子集,或者另一个解决方案已经提出它的头,您可能无法在所需的行为上实现某种接口,并交换它根据你是使用java还是scalajs。

答案 2 :(得分:0)

嗯,目前还不清楚 - 除了关于Basil提到的新课程的暗示 - 为什么你会这样做,需要这个。

在类似unix的系统上,您可以使用系统日期,可能也在Windows系统上,但语法相同?您可能松散了系统独立性:

scala> import sys.process._
import sys.process._

scala> "date".!
Mi 31. Jan 07:09:04 CET 2018
res150: Int = 0

如果您有数据库,这些通常也会提供日期/时间。

然后你可以尝试通过TCP / IP获取日期。

所有这些解决方案在所有情况下都不如使用较新的Java类甚至是较旧的Java类。