如何在Scala中将String转换为日期时间?

Pra*_*A R 36 scala

我是Scala的新手,我在过去的几天里学到了它.我对Scala从字符串转换的日期表示怀疑.

如何使用Scala将String转换为日期和时间?

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

当我这样做时,我得到一个编译器错误,我无法将其转换为Scala,因为我是Scala的新手.我知道将Java转换为Scala并不好......

请分享你的答案.

4le*_*x1v 48

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

val format = new java.text.SimpleDateFormat("yyyy-MM-dd")
format.parse("2013-07-06")
Run Code Online (Sandbox Code Playgroud)

用于格式化的文档 - SimpleDateFormat

或者如果您使用的是joda的DateTime,则调用parse方法:

DateTime.parse("07-06-2013")
Run Code Online (Sandbox Code Playgroud)

docs - DateTime

  • Scala 库中是否有包含此转换隐式的包?像持续时间这样的东西。 (2认同)
  • @Jatin没有,但你可以自己写:`implicit def str2date(str:String)= DateTime.parse(str)` (2认同)

Bus*_*ero 6

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

如果使用sbt,请将此添加到build.sbt.

libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "1.8.0"
Run Code Online (Sandbox Code Playgroud)

导入并解析您的日期.

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

DateTime.parse("2014-07-06")
Run Code Online (Sandbox Code Playgroud)


Vij*_*hna 5

对于 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
Run Code Online (Sandbox Code Playgroud)