Scala 字符串到日期的转换
Scala string to date conversion
我有日期的字符串格式,但它来自 csv 文件:
20200520T0200 ,假设其格式为 (yyyyMMdd/T/24-hour format).
我已经设法读取 csv 文件中的行并将其分离到数组缓冲区中。
我的问题是我无法将字符串格式化为日期,因为我需要使用日期来计算一些值。因为我将使用此格式化程序来格式化我的 arraybuffer 的第一个元素的所有值,这是带有字符串“20200406T0300,等等,等等”的时间。
目前我已经尝试使用 DateTimeFormatter,
csv file
导入 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)}")
}
我认为这不是标准的 DateTime 格式,有人在其中删除或添加了一些内容。它看起来像 ISO DATE
但 ISO
的格式是 yyyy-MM-ddTHH:mm ...
编辑:@OleV.V。请将格式说明为 ISO 8601 格式
的基本格式
你有几个选择
要么去掉那个 T 并用 SimpleDateTimeFormat
解析它
val format = new SimpleDateFormat("yyyyMMddHHmm")
val f = format.parse("20200520T0200".replaceAll("T", "")) //5 月 20 日星期三 02:00:00 GMT 2020
或者定义一个自定义格式化程序并将其解析为 time object
让您的船漂浮的东西。
val customFormatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmm");
val q = LocalDateTime.parse("20200520T0200", customFormatter)
我有日期的字符串格式,但它来自 csv 文件: 20200520T0200 ,假设其格式为 (yyyyMMdd/T/24-hour format).
我已经设法读取 csv 文件中的行并将其分离到数组缓冲区中。
我的问题是我无法将字符串格式化为日期,因为我需要使用日期来计算一些值。因为我将使用此格式化程序来格式化我的 arraybuffer 的第一个元素的所有值,这是带有字符串“20200406T0300,等等,等等”的时间。
目前我已经尝试使用 DateTimeFormatter,
csv file 导入 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)}")
}
我认为这不是标准的 DateTime 格式,有人在其中删除或添加了一些内容。它看起来像 ISO DATE
但 ISO
的格式是 yyyy-MM-ddTHH:mm ...
编辑:@OleV.V。请将格式说明为 ISO 8601 格式
的基本格式你有几个选择
要么去掉那个 T 并用
解析它SimpleDateTimeFormat
val format = new SimpleDateFormat("yyyyMMddHHmm") val f = format.parse("20200520T0200".replaceAll("T", "")) //5 月 20 日星期三 02:00:00 GMT 2020
或者定义一个自定义格式化程序并将其解析为
time object
让您的船漂浮的东西。val customFormatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmm"); val q = LocalDateTime.parse("20200520T0200", customFormatter)