2013-02-16 62 views
1

错误消息如何将Datepicker-date转换为Java.util.Date?

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"))

Java对象 - 实体

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

Java脚本

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

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

HTML

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

回答

5

你可以这样做:

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

+1这是最简单的解决方案,如果你不介意以这种方式格式化的显示值 – mgibsonbr 2013-02-16 21:00:32

+0

我已经试过这一个,但我试过yyyy-MM-dd像错误消息告诉我这样做,但它不是'工作?这工作正常!将来如果我想显示像dd/mm/yyyy这样的本地化格式,那么该怎么办? – Sami 2013-02-16 21:08:43

+0

BTW是否有任何明智的解决方案将字段投射为JSON格式?我的意思是,如果你有一个表单中的20个字段,我必须写很多代码才能格式化所有内容? JSON.stringify({“eventDate”:$('#datepicker')。val() – Sami 2013-02-16 21:23:18

1

可能有更好的解决方案在那里,但由于这是一个问题,我经常碰到,通常无法找到一个现成的工具,我结束了写我自己的功能为:

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; 
}; 

第一个是你在特定情况下需要的,因为你只处理日期(而不是时间)。

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

谢谢! Uncaught TypeError:Object 02/28/2013没有方法'getFullYear' – Sami 2013-02-16 21:03:11

+0

@Sami抱歉,我忘记了这个方法需要一个'Date'而不是一个字符串。回答更新,但也检查其他答案,因为他们更好。 – mgibsonbr 2013-02-16 21:05:30

+0

是的,他们工作,但我真的很感谢你的努力! – Sami 2013-02-16 21:18:28

2

datepicker包括日期格式化工具$.datepicker.formatDate

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

试试这个:

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

这也可以!谢谢! – Sami 2013-02-16 21:16:05

+2

这可以让你在UI中使用不同的格式 – charlietfl 2013-02-16 21:53:06

相关问题