簡體   English   中英

Scala 字符串到日期的轉換

[英]Scala string to date conversion

我有一個日期的字符串格式,但它來自 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)}")
}

我不認為這是標准的 DateTime 格式,有人刪除或添加了一些東西。 它看起來像ISO DATEISO格式為yyyy-MM-ddTHH:mm...

編輯:@OleV.V。 請澄清格式為ISO 8601格式的基本格式

你有幾個選擇

  1. 要么擺脫那個 T 並用SimpleDateTimeFormat解析它

    val format = new SimpleDateFormat("yyyyMMddHHmm") val f = format.parse("20200520T0200".replaceAll("T", "")) //2020 年 5 月 20 日星期三 02:00:00 GMT

  2. 或者定義一個自定義格式化程序並將其解析為time object

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM