【问题标题】:How to convert String to date time in Scala?如何在 Scala 中将字符串转换为日期时间?
【发布时间】:2013-06-08 05:51:54
【问题描述】:

我是 Scala 的新手,最近几天才学会了它。我对 Scala 的日期从字符串转换有疑问。

如何使用 Scala 将字符串转换为日期和时间?

它的工作方式与 Java 相同吗?

当我这样做时,我得到一个编译器错误,我无法将它转换为 Scala,因为我是 Scala 新手。而且我知道把Java转成Scala不好……

请分享你的答案。

【问题讨论】:

标签: scala datetime


【解决方案1】:

如果你使用的是 Java 的 util.Date 那么就像在 java 中一样:

val format = new java.text.SimpleDateFormat("yyyy-MM-dd")
format.parse("2013-07-06")

格式化文档 - SimpleDateFormat

或者如果你使用的是 joda 的 DateTime,那么调用 parse 方法:

DateTime.parse("07-06-2013")

文档 - DateTime

【讨论】:

  • scala 库中是否有任何包包含此转换的隐式?诸如持续时间之类的东西。
  • @Jatin 没有,但你可以自己写:implicit def str2date(str: String) = DateTime.parse(str)
  • 如果您计划在您的应用程序上拥有多个执行线程,则不应使用 SimpleDateFormatjava.util.Date,因为它们不是线程安全的(警告适用于 Java 7 -)。在这种情况下,请考虑joda.time
【解决方案2】:

我的首选选项是使用 nscala-time:https://github.com/nscala-time/nscala-time

如果使用 sbt,请将其添加到您的 build.sbt。

libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"

导入并解析您的日期。

import com.github.nscala_time.time.Imports._

DateTime.parse("2014-07-06")

【讨论】:

    【解决方案3】:

    对于 Scala 2.11.8 (Java 1.8.0_162)

    import java.time._
    import java.time.format.DateTimeFormatter
    
    val datetime_format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")
    val date_int_format = DateTimeFormatter.ofPattern("yyyyMMdd")
    val last_extract_value="2018-05-09 10:04:25.375"
    last_extract_value: String = 2018-05-09 10:04:25.375
    //String to Date objects 
    val string_to_date = datetime_format.parse(last_extract_value)
    java.time.temporal.TemporalAccessor = {},ISO resolved to 2018-05-08T21:01:15.402
    //Date Back to string 
    date_int_format.format(string_to_date)
    res18: String = 20180508
    

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      相关资源
      最近更新 更多