当前位置: 首页 > 知识库问答 >
问题:

如何在SpringBoot/MVC/Web中将HTML日期转换为ZonedDateTime?

吕修筠
2023-03-14

我正在用spring boot编写一个代码,这是一个web项目。Im还使用了thymeleaf和bootstrap。

我有一个模型,它包含一个名为'validade'的ZonedDateTime变量。在我的HTML/thymeleaf文件中,我有一个datepicker,允许您选择日、月和年。

出现错误(类型=错误请求,状态=400)。Object='tool'的验证失败。错误计数:1 org.springframework.validation.bindexception:org.springframework.validation.BeanPropertyBindingResult:1错误字段“validade”上对象“tool”中的字段错误:拒绝值[2021-01-08];代码[TypeMismatch.tool.validade,TypeMismatch.validade,TypeMismatch.java.time.ZonedDateTime,TypeMismatch];参数[org.springframework.context.support.defaultmessageSourceResolvable:代码[tool.validade,validade];参数[];default message[validade]];默认消息[无法将“java.lang.String”类型的属性值转换为属性“validade”所需的类型“java.time.zoneddatetime”;嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“2021-01-08”的类型[java.lang.String]转换为类型[@org.springframework.format.annotation.datetimeformat@javax.persistence.column java.time.zoneddatetime];嵌套异常为

<form method="POST" th:object="${tool}"  th:action="@{/tools/add}">
...
    <div lang="pt-br" class='date'>
                           
    <input th:value="${tool.validade}" th:field="${tool.validade}" lang="pt-br" id='data-validade' type='date' data-date-format="YYYY/MM/DD" class="form-control" />
    
    </div>
...
</form>
public class Tool{
...
    @DateTimeFormat(pattern = "dd-MM-yyyy")
    @Column(nullable = true, unique = false)
    private ZonedDateTime validade;

}

共有1个答案

隗和裕
2023-03-14

模式不正确,根据您的日志,发送的值为2021-01-08。这意味着日期遵循模式“YYYY-MM-DD”。

 类似资料:
  • 问题内容: 我需要转换为搜索的内容,但找不到任何内容。那你可以帮我解决这个问题吗? 编辑: 我在GWT屏幕上执行此转换过程。我在屏幕上,使用它的方法可以给我带来价值。因此,我应该将此值放入具有Date类型的对象的属性中。 希望我的编辑会更加清晰。 编辑2: 这行是我的问题的解决方案: 问题答案: 日期转换的最佳方法是使用以毫秒为单位的时间(UTC)。JS Date对象和java.util.Date

  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 问题内容: 我在服务器中生成的某些日志文件中有毫秒,我也知道从中生成日志文件的语言环境,我的问题是将毫秒转换为指定格式的日期。该日志的处理在不同时区的服务器上进行。转换为“ SimpleDateFormat”时,程序将使用机器的日期,因为这种格式化的日期并不代表服务器的正确时间。有什么办法可以优雅地处理吗? 输出: 问题答案:

  • 查询:{“日期”:{“$GTE”:“2021-07-22T03:00:00”,“$LTE”:“2021-07-23T03:00:00”},“isdeleted”:false},字段:{},排序:{} 将字符串转换为数据格式,如下所示,我只得到时间戳 DateFormat originalFormatData=new SimpleDateFormat(“yyyy-mm-dd't'hh:mm:ss”,

  • 我将calendar.getTimeinMilliseconds()中的日期存储在SQLite DB中。我需要在SELECT语句中标记每个月的第一行,所以我只需要使用SQLite函数将时间以毫秒为单位转换为任何日期格式。我怎样才能避免这个?

  • 问题内容: 假设您网站的用户输入了日期范围。 您需要将此日期发送到服务器进行某些处理,但是服务器希望所有日期和时间都采用UTC。 现在,假设用户位于阿拉斯加,夏威夷或斐济。由于它们所处的时区与UTC完全不同,因此需要将日期范围转换为以下形式: 使用JavaScript Date对象,您如何将第一个“本地化”日期范围转换为服务器可以理解的范围? 问题答案: 该方法返回简化的扩展ISO格式(ISO86