首页 > 解决方案 > 如何在spring boot中以dd-mm-yyy格式插入日期

问题描述

我在输入日期时遇到问题;我有一个由产品代码、名称和日期组成的表单(后者已保存为字符串)。我尝试通过插入以下示例字段来使用 Postman 对其进行测试:{ "prodcode": "PC001", "name": "Personal Computer", "date": "11/23/2020" }

当我将其保存在数据库中时,出现以下错误:

数据截断:不正确的日期时间值:'23 -11-2020'for column' data' at row 1

这是感兴趣的代码:

产品.java

package com.example.Model; 

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import com.example.Model.Product;


@Entity
@Table(name="productprove")
public class Product {
    @Id
    private String prodcode; 
    private String name; 
    
    private String date;
    

      public Product() {
      }

      public Product(String prodcode, String name) {
          super();
          this.prodcode = prodcode;
          this.name = name;
      }

    public String getProdcode() {
        return prodcode;
    }

    public void setProdcode(String prodcode) {
        this.prodcode = prodcode;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

控制器.java

@RestController
@CrossOrigin(origins="http://localhost:4200")
@RequestMapping(value="/api")
public class Controller {
    
    @Autowired
    private Product_Service productservice;
    
    @PostMapping("save-product")
    public boolean saveProduct(@RequestBody Product product) throws IOException, ParseException {
        SimpleDateFormat dateParser = new SimpleDateFormat ("dd/MM/yyyy"); //Format for input
        String date=product.getDate();
        java.util.Date dn = dateParser.parse(date); //Parsing the date
        SimpleDateFormat dateFormatter = new SimpleDateFormat ("dd-MM-yyyy"); //Format for output
        product.setDate(dateFormatter.format(dn)); //Printing the date
         return productservice.saveProduct(product);
    }

我想知道我的想法是否正确,或者是否需要进行其他更改。

衷心感谢帮助我的人

标签: spring-bootdate-format

解决方案


尝试使用日期而不是字符串作为日期。并使用@DateTimeFormat

@Entity
@Table(name="productprove")
public class Product {
    @DateTimeFormat(pattern = "dd-MM-yyyy")
    @Column(name = "date")
    private Date date;

我希望这会奏效。


推荐阅读