2016-11-25 45 views
2

我使用ScalaJS和Play。我想在JS和JVM平台上使用的许多模型都涉及日期和时间。鉴于缺乏跨平台的日期/时间库,人们如何接近这一点?ScalaJS:跨平台日期的最新技术状态如何?

事情我是知道的:

  1. scalajs-java的时间项目(https://github.com/scala-js/scala-js-java-time)端口JDK8的java.time API来Scala.js。不幸的是,这还远远没有完成,通过提交日志来判断,似乎已经停滞。
  2. https://github.com/mdedetrich/soda-time是JodaTime到Scala/Scala.js的一个端口。但它尚未准备好用于生产。
  3. 旧帖子https://groups.google.com/forum/#!topic/scala-js/6JoJ7x-VxLA建议在共享代码中存储毫秒,然后在每个平台上隐式转换为js.Date或JodaTime。但我们确实需要一个通用的接口,但这并不是。
  4. 李浩逸优秀的“Hands-on Scala.js”有一个简单的跨平台库(http://www.lihaoyi.com/hands-on-scala-js/#ASimpleCross-BuiltLibrary),理论上可以扩展到在jvm和Momento中委托给JodaTime的/ shared中的API在js上 - 但这听起来像很多工作。
  5. (稍后添加)https://github.com/soc/scala-java-time基于对OpenJDK贡献的java-time的实现。自述文件声称大多数东西都在工作。现在,这看起来像是我最需要的方法。

来自那些谁在我之前的任何意见?现在第四个选项似乎是我最好的选择(API限于我实际使用的东西)。我希望有更好的东西。

+0

也许这可以帮助你:http://pavkin.ru/cross-platform-polymorphic-datetime-values-in-scala-with-type-classes/ – sjrd

+0

是的,该参考是有帮助的。我实际尝试过之后会更广泛地报告。谢谢。 – bwbecker

+0

我发现pavkin.ru引用是一个非常复杂的解决方案,看起来在JVM上有不同的编码约定,而不是JS。我无法取得好的进展。也不喜欢需要用日期/时间的东西来参数化我的所有案例类的想法。也许我只是不理解事情,但我认为我不会走这条路。 – bwbecker

回答

1

我和你在同一条船上,我想出的最佳解决方案是cquiroz's scala-java-time library。从阅读上面的评论到你的问题,看起来你终于在同一个地方登陆了!

我来自谷歌搜索这里,给出了比上面提到的替代方案更好的解决方案,让我们考虑将此问题标记为未来访问者已解决。

+0

+1对于cquiroz的scala-java-time的实现。截至2017年5月17日,请参阅我的上一个注意事项:) 是的,我将检查此答案。 – bwbecker