日期转换

发布于 2024-10-24 23:43:17 字数 518 浏览 2 评论 0原文

我有一个日期变量

var date: Date = new Date()

,然后我已将此日期转换为字符串:

var dateStr = date.toString()

现在我需要将此字符串转换回日期。 我已经尝试过:

1:

   var stringToDate: Date = date2Str.asInstanceOf[Date]

和 2:

stringToDate: Date = new SimpleDateFormat("dd.MM.yyyy").parse(dateStr);

但在这两种情况下我都收到错误:

java.lang.ClassCastException:
java.lang.String cannot be cast to java.util.Date

I have a date variable

var date: Date = new Date()

then I have converted this date to String:

var dateStr = date.toString()

now I need to convert back this String to date.
I have tried both:

1:

   var stringToDate: Date = date2Str.asInstanceOf[Date]

and 2:

stringToDate: Date = new SimpleDateFormat("dd.MM.yyyy").parse(dateStr);

But in both case I got the error:

java.lang.ClassCastException:
java.lang.String cannot be cast to java.util.Date

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

倾城花音 2024-10-31 23:43:17

我在您的代码中发现了一些问题,但这工作正常:

scala> val format = new java.text.SimpleDateFormat("dd-MM-yyyy")
format: java.text.SimpleDateFormat = java.text.SimpleDateFormat@9586200

scala> format.format(new java.util.Date())
res4: java.lang.String = 21-03-2011

scala> format.parse("21-03-2011")
res5: java.util.Date = Mon Mar 21 00:00:00 CET 2011

I see a couple of problems in your code, but this works fine:

scala> val format = new java.text.SimpleDateFormat("dd-MM-yyyy")
format: java.text.SimpleDateFormat = java.text.SimpleDateFormat@9586200

scala> format.format(new java.util.Date())
res4: java.lang.String = 21-03-2011

scala> format.parse("21-03-2011")
res5: java.util.Date = Mon Mar 21 00:00:00 CET 2011
没有心的人 2024-10-31 23:43:17

Scala 2.11 开始,面向 Java 8,可以使用 java.time Date Time API:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

val dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy")

LocalDate.now().format(dtf)        // "06-07-2018"
LocalDate.parse("06-07-2018", dtf) // java.time.LocalDate = 2018-07-06

请注意:

  • 这是标准库的一部分(不需要第三方依赖项)
  • 这是 旨在替换 旧的 java.util.Date/SimpleDateFormat API。
  • 这也应该取代广泛使用的joda-time库:

    <块引用>

    请注意,从 Java SE 8 开始,用户被要求迁移到 java.time (JSR-310) - JDK 的核心部分,它将取代该项目。

  • 通过关联nscala-time,它是joda-的包装器time

Starting Scala 2.11, targeting Java 8, the java.time Date Time API can be used:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

val dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy")

LocalDate.now().format(dtf)        // "06-07-2018"
LocalDate.parse("06-07-2018", dtf) // java.time.LocalDate = 2018-07-06

Note that:

  • This is part of the standard library (no need for third party dependencies)
  • This is meant to replace the old java.util.Date/SimpleDateFormat api.
  • This is also supposed to replace the widely used joda-time library:

    Note that from Java SE 8 onwards, users are asked to migrate to java.time (JSR-310) - a core part of the JDK which replaces this project.

  • And by association nscala-time which is a wrapper around joda-time.

无风消散 2024-10-31 23:43:17

您的第一次尝试应该会给您一个 ClassCastException,因为您无法将.aString 转换为 Date。第二次尝试似乎没有使用正确的格式 Date.toString() 打印。 java.utility.Date 的 toString 方法返回 javadoc 中指定格式的字符串。

Your first try should give you a ClassCastException because you cannot cast.aString to a Date. the second try does not seem to be using the right format that Date.toString() prints. The toString method of java.utility.Date returns a String in the format specified in the javadoc.

金橙橙 2024-10-31 23:43:17

使用 nscala-time 以下对我有用:

import com.github.nscala_time.time._
import com.github.nscala_time.time.Imports._

val ysterday= (DateTime.now- 1.days).toString(StaticDateTimeFormat.forPattern("yyyyMMdd"))

using nscala-time the following worked for me :

import com.github.nscala_time.time._
import com.github.nscala_time.time.Imports._

val ysterday= (DateTime.now- 1.days).toString(StaticDateTimeFormat.forPattern("yyyyMMdd"))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文