当前位置: 首页 > 知识库问答 >
问题:

Scala 字符串到日期的转换

羊舌成周
2023-03-14

我有一个日期的字符串格式,但它来自csv文件:20200520T0200,假设它的格式为(yyyyMMdd/T/24小时格式)。

我已经设法读取了csv文件中的行,并将其分离到数组缓冲区中。

我的问题是我不能将字符串格式化成日期,因为我需要使用日期来计算一些值。因为我将使用这个格式化程序来格式化我的arraybuffer的第一个元素的所有值,这是带有字符串“20200406T0300,等等,等等”的时间。

目前我已经尝试使用DateTimeFormatter,

csv文件导入java.io.file

import scala.io.Source
import scala.collection.mutable.ArrayBuffer
import java.time._
import java.time.format.DateTimeFormatter

val dtf = DateTimeFormatter.ofPattern("yyyyMMddaH")
val date_int_format = DateTimeFormatter.ofPattern("yyyyMMdd")
val last_extract_value= "20200530T0200"
val string_to_date = dtf.parse(last_extract_value)


val rows = ArrayBuffer[Array[String]]()

val bufferedSource = Source.fromFile("D:/Scala/Testtt/src/main/scala/testData.csv")
for (line <- bufferedSource.getLines.drop(10)) {
  rows += line.split(",").map(_.trim)

}
for (row <- rows) {
  println(s"${row(0)}|${row(1)}")
}

共有1个答案

晏鸿畅
2023-03-14

我不认为这是一种标准的日期时间格式,有人要么删除了它,要么在其中添加了一些东西。它看起来像是ISO日期,但ISO的格式是yyyy-MM-ddTHH:MM…

编辑:@OleV. V.善意地澄清了格式作为ISO 8601格式的基本形式

你有几个选择

>

  • 要么去掉这个T,然后用SimpleDateTimeFormat解析它

    val format = new SimpleDateFormat(“yyyyMMddHHmm”) val f = format.parse(“20200520T0200”.replaceAll(“T”, “”)) //Wed May 20 02:00:00 GMT 2020

    或者定义一个自定义格式化程序,并将其解析为< code>time object浮动的对象。

    val customFormatter = DateTimeFormatter.ofPattern(“yyyyMMdd'T'HHmm”);val q = LocalDateTime.parse(“20200520T0200”, customFormatter)

  •  类似资料:
    • 问题内容: 我已经写了这个功能: 当我通过日期以及获取输出日期作为 我要去哪里的时候?还做什么,如果我想只得到和 任何帮助表示赞赏 问题答案: 找到以下解决方案…。发布它,因为它也可以帮助其他人:) 输出: 2014-04-24T11:15:00.000 + 02:00

    • 我有以下代码段来更改日期格式 用相同的日期格式将字符串再次转换回日期的最佳方法是什么

    • 我正在将日期/日期时间字符串转换为,我有一种日期时间格式,它可能有以下值之一: 有时有时间和没有时间,我需要将其转换为。 我已经尝试了下面的代码 因为没有时间,我将它设置为默认值,但是当我试图解析时 它抛出的错误类似于 线程"main"java.time.format.DateTimeParseException中的异常:无法解析文本'2016-06-06':无法从TemporalAccess:{

    • 问题内容: 如何将字符串日期格式转换为日期,我的日期字符串格式为 接下来,我没有运气尝试。 以上所有语句都给出了解析错误。 问题答案: 请阅读的文档time.Parse: 该布局通过显示参考时间(定义为 2006年1月2日星期一15:04:05-0700 如果它是值,将被解释;它用作输入格式的示例。然后将对输入字符串进行相同的解释。 所以正确的格式是

    • 问题内容: 我已经为Android应用程序的这段代码苦苦挣扎了一段时间,但我无法理解。我已经阅读并尝试了在stackoverflow和其他地方找到的所有解决方案,但是仍然没有运气。 我想做的是有一个将字符串转换为UTC日期的函数,以及一个将转换为这样的字符串的函数。 这导致:都错了。 我尝试设置为,不走运。 我注意到的另一件事:如果这样做, 它将给我:。 如果有人可以为我提供一些解释/示例代码,我

    • 问题内容: 我有以下格式的日期字符串: 我需要将其更改为以下内容: 以前,我一直使用此库-> SwiftDate来操作日期,但现在不起作用。 我也尝试过类似的东西: 但这不起作用。我能怎么做? 提前致谢。 问题答案: 具有小数秒和时区的标准ISO8601日期格式为 yyyy-MM-dd’T’HH:mm:ss.SSSZ 斯威夫特3: 在macOS 10.13+中,iOS 11+ 是输入格式化程序的替