简体   繁体   English

如何将Datepicker-date转换为Java.util.Date?

[英]How to convert Datepicker-date to Java.util.Date?

ERROR Message 错误信息

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '02/23/2013': not a valid representation (error: Can not parse date "02/23/2013": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) org.codehaus.jackson.map.JsonMappingException:无法根据字符串值'02 / 23/2013'构造java.util.Date的实例:不是有效的表示形式(错误:无法解析日期“ 02/23/2013”​​:与任何标准格式(“ yyyy-MM-dd'T'HH:mm:ss.SSSZ”,“ yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”,“ EEE, dd MMM yyyy HH:mm:ss zzz“,” yyyy-MM-dd“))

Java object - entity Java对象-实体

@Column(name = "event_date")
@Temporal(TemporalType.TIMESTAMP)
private Date eventDate;

Java Script Java脚本

$(function() {
            $("#datepicker").datepicker();
        });

function formToJSON() {
            return JSON.stringify({
                   "eventDate": $('#datepicker').val()
            });
}

HTML 的HTML

<input type="text" id="datepicker" name="date" placeholder="Date" />

You could do: 您可以这样做:

$(function() {
   $("#datepicker").datepicker({
      dateFormat: "yy-mm-dd"
   });
});

datepicker includes a date formatting utility $.datepicker.formatDate datepicker包含日期格式化工具$.datepicker.formatDate

API reference: http://docs.jquery.com/UI/Datepicker/$.datepicker.formatDate API参考: http//docs.jquery.com/UI/Datepicker/$.datepicker.formatDate

Try this: 尝试这个:

function formToJSON() {
            var d= $('#datepicker').datepicker('getDate')
            return JSON.stringify({
                   "eventDate": $.datepicker.formatDate('yy-mm-dd', d)
            });
}

There are probably better solutions out there, but since this is a problem I often run into and usually can't find a readily available tool, I ended up writing my own functions for that: 可能有更好的解决方案,但是由于这是我经常遇到的问题,并且通常找不到易于使用的工具,因此我最终为此编写了自己的函数:

function dateFormat(date) {
    function two(v) { return v < 10 ? "0" + v : "" + v; }
    function four(v) { return v < 10 ? "000" + v : v < 100 ? "00" + v : v < 1000 ? "0" + v : "" + v; }
    var y = four(date.getFullYear());
    var m = two(date.getMonth()+1);
    var d = two(date.getDate());
    return y + "-" + m + "-" + d;
};

function datetimeFormat(date) {
    function two(v) { return v < 10 ? "0" + v : "" + v; }
    function three(v) { return v < 10 ? "00" + v : v < 100 ? "0" + v : "" + v; }
    function four(v) { return v < 10 ? "000" + v : v < 100 ? "00" + v : v < 1000 ? "0" + v : "" + v; }
    var y = four(date.getUTCFullYear());
    var m = two(date.getUTCMonth()+1);
    var d = two(date.getUTCDate());
    var h = two(date.getUTCHours());
    var mm = two(date.getUTCMinutes());
    var s = two(date.getUTCSeconds());
    var ms = three(date.getUTCMilliseconds());
    return y + "-" + m + "-" + d + "T" + h + ":" + mm + ":" + s + "." + ms;
};

The first one is what you need in your particular case, since you're only dealing with dates (and not time). 第一个是您在特定情况下需要的,因为您只处理日期(而不是时间)。

        return JSON.stringify({
               "eventDate": dateFormat($('#datepicker').datepicker('getDate'))
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM