【问题标题】:Convert Date String to Day in Scala在 Scala 中将日期字符串转换为日期
【发布时间】:2020-05-13 21:11:33
【问题描述】:

我有一个日期字符串

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

我需要在一周的最后一天获得价值。即 2020-02-08

这是我到目前为止使用 SimpleDateFormat 所做的

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”

【问题讨论】:

  • 我建议你不要使用SimpleDateFormatCalendar。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APILocalDateDateTimeFormatter

标签: scala date simpledateformat


【解决方案1】:

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 将是前一天。

【讨论】:

  • 基本上是一个很好的答案(+1)。出于个人喜好,我会使用DateTimeFormatter,例如DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ssXX")。我肯定会去图书馆找星期六:ld.with(TemporalAdjusters.nextOrSame(DayOfWeek.SATURDAY))。此外,如果今天是星期日,您将增加 6 到 7 天,即减去 1 天。
  • 这很棒。非常感谢。让我试试,如果它有效,会更新你。真的很感激
  • 我需要将日期格式化为每小时等,但我无法做到这一点。这是我尝试过的:val parsedDate = LocalDate.parse(ts, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssZ"))。但这是默认创建这种格式的输出——2020-02-05
  • 谢谢。我就是这么做的。 :)
猜你喜欢
  • 2021-12-21
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多