如何在Scala中将字符串转换为日期时间?

50

我刚接触Scala,最近几天学习了这门语言。我有一个关于Scala日期字符串转换的疑问。

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

它的工作方式是否与Java相同?

当我按照Java的方式进行操作时,出现编译错误,由于我是Scala新手,因此无法进行转换。而且我知道将Java转换为Scala并不好...

请分享您的答案。


2
是的,它的工作方式与Java相同。https://dev59.com/km435IYBdhLWcg3wfgQf#5377949 - Shrey
3个回答

63

如果您正在使用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")

文档 - 日期时间


2
在Scala库中有没有包含这种转换的隐式转换的包?类似于Duration这样的东西。 - Jatin
2
@Jatin 不可以,但你可以自己写: implicit def str2date(str: String) = DateTime.parse(str) - 4lex1v
如果您计划在应用程序中拥有多个执行线程,则不应使用SimpleDateFormatjava.util.Date,因为它们不是线程安全的(该警告仅适用于Java 7-)。在这种情况下,请考虑使用joda.time - mlg

6

我推荐使用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")

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接