将日期从一种格式解析为另一种格式
Parse dates from one format to another
我有一个字符串形式的初始日期,我需要将其转换为具有特定格式的日期。我尝试在字符串中定义日期格式并对其进行解析,然后将其格式化为所需的格式。问题是我需要一个日期作为最终结果。
这是我使用的代码:
def parseDateToOriginal(date: String): String = {
val initialDateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy")
val finalDateFormat = new SimpleDateFormat("yyyy-mm-dd")
val result = finalDateFormat.format(initialDateFormat.parse(date))
result
}
所以我需要 Date 作为此方法的 return 类型。我试图解析结果字符串以获得正确的日期,但由于某种原因,结果默认返回原始日期格式。我该如何解决这个问题?
这是我再次尝试解析它的方式:
val parsedDate = new SimpleDateFormat("yyyy-mm-dd").parse(parseDateToOriginal(date))
结果是模式 "EEE MMM dd hh:mm:ss zzz yyyy"
首先,SimpleDate
已经过时了。推荐当前java.time
库
下一步,如果你需要return一个Date
然后解析输入和return Date
。您只需要在呈现时格式化 Date
,即将其更改为 String
.
import java.time.LocalDate
import java.time.format.DateTimeFormatter
def parseToDate(date: String): LocalDate =
LocalDate.parse(date
,DateTimeFormatter.ofPattern("EEE MMM dd hh:mm:ss zzz yyyy"))
尝试
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
def parseDateToOriginal(date: String): String = {
LocalDateTime
.parse(date, DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss zzz yyyy"))
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
}
输出
parseDateToOriginal("Thu Jun 18 20:56:02 EDT 2009") // res2: String = 2009-06-18
请注意,finalDateFormat
格式存在错误
val finalDateFormat = new SimpleDateFormat("yyyy-mm-dd")
您在月份位置使用小写 mm
,但应使用大写 MM
。小写 mm
表示分钟,因此它会错误地导致 res2: String = 2009-56-18
作为输出。
我有一个字符串形式的初始日期,我需要将其转换为具有特定格式的日期。我尝试在字符串中定义日期格式并对其进行解析,然后将其格式化为所需的格式。问题是我需要一个日期作为最终结果。 这是我使用的代码:
def parseDateToOriginal(date: String): String = {
val initialDateFormat = new SimpleDateFormat("EEE MMM dd hh:mm:ss zzz yyyy")
val finalDateFormat = new SimpleDateFormat("yyyy-mm-dd")
val result = finalDateFormat.format(initialDateFormat.parse(date))
result
}
所以我需要 Date 作为此方法的 return 类型。我试图解析结果字符串以获得正确的日期,但由于某种原因,结果默认返回原始日期格式。我该如何解决这个问题?
这是我再次尝试解析它的方式:
val parsedDate = new SimpleDateFormat("yyyy-mm-dd").parse(parseDateToOriginal(date))
结果是模式 "EEE MMM dd hh:mm:ss zzz yyyy"
首先,SimpleDate
已经过时了。推荐当前java.time
库
下一步,如果你需要return一个Date
然后解析输入和return Date
。您只需要在呈现时格式化 Date
,即将其更改为 String
.
import java.time.LocalDate
import java.time.format.DateTimeFormatter
def parseToDate(date: String): LocalDate =
LocalDate.parse(date
,DateTimeFormatter.ofPattern("EEE MMM dd hh:mm:ss zzz yyyy"))
尝试
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
def parseDateToOriginal(date: String): String = {
LocalDateTime
.parse(date, DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss zzz yyyy"))
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
}
输出
parseDateToOriginal("Thu Jun 18 20:56:02 EDT 2009") // res2: String = 2009-06-18
请注意,finalDateFormat
val finalDateFormat = new SimpleDateFormat("yyyy-mm-dd")
您在月份位置使用小写 mm
,但应使用大写 MM
。小写 mm
表示分钟,因此它会错误地导致 res2: String = 2009-56-18
作为输出。