【问题标题】:Handling date objects javascript vs java处理日期对象 javascript vs java
【发布时间】:2019-06-27 00:36:07
【问题描述】:

我有一个日期输入字段。用户输入一个日期然后提交,该日期保存在数据库中。对于如何做事,我有两种选择,我知道如何实现这两种选择,但我不太确定最佳做法是什么,因为我是菜鸟。

选项 1:从日期输入读取的值是一个字符串,并将其发送到我的 Spring 后端,然后创建一个日期对象。

选项 2:从日期输入中读取值并在 JavaScript 中创建一个日期对象,并将一个日期对象发送到我的 spring 控制器。

我倾向于选项 1,因为我认为我的控制器会有更好的错误处理能力?

【问题讨论】:

  • 仅供参考,通过 HTTP 请求正文(或查询字符串)发送的任何值都将是 字符串。你不能在不序列化的情况下将 JS Date 实例发布到后端
  • IMO,日期的最佳序列化格式是ISO 8601。 JS 日期可以使用Date.prototype.toISOString() 生成其中之一
  • 获取客户输入并将其转换为 JS Date 对象,可用作输入的前端验证方法。然而,后端将收到对象的字符串表示形式。
  • @Phil 我不知道,谢谢!我也尝试了选项 2,它没有我序列化它就可以正常工作。也许它会在您指定后端期望的类型时自动序列化它?
  • @DaveDaBest 如果你发送 JSON,Date.prototype.toJSON() 内部调用 toISOString()

标签: javascript java


【解决方案1】:

您的问题没有实际意义,因为无论哪种方式,您都会将一串日期发送回服务器。

ISO 8601

在将日期时间值交换为文本时,通常最好使用标准 ISO 8601 格式。对于 YYYY-MM-DD 的日期。

java.time

至于在该日期值上执行与日期时间相关的工作,我建议使用 Java。 Java 提供了在java.time 类中找到的行业领先的日期时间框架,由JSR 310 定义。见Oracle Tutorial

java.time 类在解析/生成日期时间字符串时默认使用ISO 8601 格式很方便。

LocalDate ld = LocalDate.parse( "2019-01-23" ) ;  // Parses standard ISO 8601 strings.
String output = ld.toString() ;                   // Generates "2019-01-23".

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多