在Scala中将日期字符串转换为日期

在Scala中将日期字符串转换为日期,scala,date,simpledateformat,Scala,Date,Simpledateformat,我有一个日期字符串 val ts=“2020-02-05 15:12:01-0800” 我需要得到一周最后一天的价值。i、 e2020-02-08 这就是我现在使用SimpleDataFormat所做的 val DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ" val ts = "2020-02-05 15:12:01-0800" val date = df.parse(ts) val Cal =Calendar.getInstance() Cal.set (Calen

我有一个日期字符串

val ts=“2020-02-05 15:12:01-0800”

我需要得到一周最后一天的价值。i、 e2020-02-08

这就是我现在使用SimpleDataFormat所做的

val DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ"
val ts = "2020-02-05 15:12:01-0800"
val date = df.parse(ts)

val Cal =Calendar.getInstance()
Cal.set (Calendar.DAY_OF_WEEK, Calendar.SATURDAY)
Cal.setTime(date)

val LastDayOfWeek=DATE_FORMAT.format (Cal.getTime ())

然而,它正在返回“2020-02-05 15:12:01-0800”

SimpleDate非常陈旧和过时。下面是一个使用当前
java.time.LocalDate
库的解决方案

import java.time.{LocalDate,DayOfWeek}

val ts = "2020-02-05 15:12:01-0800"
val ld = LocalDate.parse(ts take 10)
val saturday = ld.plusDays(DayOfWeek.SATURDAY.getValue()
                           - ld.getDayOfWeek().getValue())
//saturday: java.time.LocalDate = 2020-02-08

请注意,如果
ts
日期是星期天,那么
saturday
将是前一天。

SimpleDate非常陈旧和过时。下面是一个使用当前
java.time.LocalDate
库的解决方案

import java.time.{LocalDate,DayOfWeek}

val ts = "2020-02-05 15:12:01-0800"
val ld = LocalDate.parse(ts take 10)
val saturday = ld.plusDays(DayOfWeek.SATURDAY.getValue()
                           - ld.getDayOfWeek().getValue())
//saturday: java.time.LocalDate = 2020-02-08

请注意,如果
ts
日期是周日,那么
saturday
将是前一天。

我建议您不要使用
SimpleDateFormat
日历。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。而是使用来自的
LocalDate
DateTimeFormatter
。我建议您不要使用
SimpleDateFormat
Calendar
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,请使用
LocalDate
DateTimeFormatter
,这两种格式都来自。基本上是一个很好的答案(+1)。根据喜好,我会使用
DateTimeFormatter
,例如
DateTimeFormatter.of模式(“uuu-MM-dd-HH:MM:ssXX”)
。我一定要去图书馆找星期六:
ld.with(TemporalAdjusters.nextOrSame(DayOfWeek.Saturday))
。如果今天是星期天,你会加上6-7天,也就是说,减去1天。这很好。谢谢。让我试试,如果有用的话,我会告诉你的。真的很感激我需要格式的日期,以每小时等,我不能这样做。以下是我尝试的:
val parsedDate=LocalDate.parse(ts,DateTimeFormatter.of模式(“yyy-MM-dd HH:MM:ssZ”)
。但这是默认情况下创建此格式的输出--2020-02-05谢谢。我就是这么做的。:)基本上是一个很好的答案(+1)。根据喜好,我会使用
DateTimeFormatter
,例如
DateTimeFormatter.of模式(“uuu-MM-dd-HH:MM:ssXX”)
。我一定要去图书馆找星期六:
ld.with(TemporalAdjusters.nextOrSame(DayOfWeek.Saturday))
。如果今天是星期天,你会加上6-7天,也就是说,减去1天。这很好。谢谢。让我试试,如果有用的话,我会告诉你的。真的很感激我需要格式的日期,以每小时等,我不能这样做。以下是我尝试的:
val parsedDate=LocalDate.parse(ts,DateTimeFormatter.of模式(“yyy-MM-dd HH:MM:ssZ”)
。但这是默认情况下创建此格式的输出--2020-02-05谢谢。我就是这么做的。:)