2013-02-16 90 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

相關問題