javascript - 将javascript日期转换为java sql日期错误

标签 javascript java jackson

Javascript 创建日期:

"created_at": new Date().toISOString().slice(0, 19).replace('T', ' ')

在java中,我试图将它映射到pojo类中的java.sql.date:

public class Comment extends Model{

    private Date created_at;

    public Date getCreated_at() {
        return created_at;
    }

    public void setCreated_at(Date created_at) {
        this.created_at = created_at;
    }
}

当我使用preparedStatment映射它时出现错误:

PreparedStatement pst = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
pst.setDate(1, newComment.getCreated_at());

错误:

   org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.sql.Date from String value '2017-03-27 09:28:40': not a valid representation (error: Can not parse date "2017-03-27 09:28:40": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:m
m:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))
 at [Source: java.io.StringReader@1ce91e6; line: 1, column: 16] (through reference chain: com.soul.seeker.models.Comment["created_at"])
        at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
        at org.codehaus.jackson.map.deser.StdDeserializationContext.weirdStringException(StdDeserializationContext.java:243)
        at org.codehaus.jackson.map.deser.std.StdDeserializer._parseDate(StdDeserializer.java:577)
        at org.codehaus.jackson.map.deser.std.StdDeserializer$SqlDateDeserializer.deserialize(StdDeserializer.java:1086)
        at org.codehaus.jackson.map.deser.std.StdDeserializer$SqlDateDeserializer.deserialize(StdDeserializer.java:1077)
        at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
        at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
        at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
        at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
        at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
        at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1863)
        at com.soul.seeker.serviceImpl.CommentServiceImpl.createComment(CommentServiceImpl.java:39)
        at com.soul.seeker.Application.lambda$main$7(Application.java:80)
        at spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)

最佳答案

您可以使用 long 来接收时间值。 JavaScript:

{"created_at": new Date().getTime()}

和 java bean(可以处理getter方法):

public class Comment extends Model{

private Long created_at;

public Date getCreated_at() {
    return new Date(created_at);
}

public void setCreated_at(Long created_at) {
    this.created_at = created_at;
}

}

关于javascript - 将javascript日期转换为java sql日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042520/

相关文章:

java - EasyMock 类扩展模拟不是模拟方法

java - jackson 与 JSON : How can I make it ignore additional properties but error on incomplete json?

java - 如何在自定义 json 序列化器中获取属性或字段名称

javascript - d3.js - 可折叠力布局 - 为叶节点设置可变颜色

javascript - THREE.js OrbitControl.js 你能改变逆 y 轴旋转吗?

javascript - 边框底部的 CSS 过渡延迟

java - 委托(delegate)事件模型模式 Java

javascript - 当你有多个时验证单个 Prop

java - 如何将 Java 应用程序放入系统托盘?

java - 仅在使用 Jackson 进行序列化或反序列化期间选择性 @JsonIgnore Immutables 访问器方法