Pass a datetime from javascript to c# (Controller)
Try to use toISOString(). It returns string in ISO8601 format.
GET method
javascript
$.get('/example/doGet?date=' + new Date().toISOString(), function (result) { console.log(result);});
c#
[HttpGet]public JsonResult DoGet(DateTime date){ return Json(date.ToString(), JsonRequestBehavior.AllowGet);}
POST method
javascript
$.post('/example/do', { date: date.toISOString() }, function (result) { console.log(result);});
c#
[HttpPost]public JsonResult Do(DateTime date){ return Json(date.ToString());}
The following format should work:
$.ajax({ type: "POST", url: "@Url.Action("refresh", "group")", contentType: "application/json; charset=utf-8", data: JSON.stringify({ myDate: '2011-04-02 17:15:45' }), success: function (result) { //do something }, error: function (req, status, error) { //error }});
There is a toJSON()
method in javascript returns a string representation of the Date object. toJSON() is IE8+ and toISOString() is IE9+. Both results in YYYY-MM-DDTHH:mm:ss.sssZ
format.
var date = new Date(); $.ajax( { type: "POST", url: "/Group/Refresh", contentType: "application/json; charset=utf-8", data: "{ 'MyDate': " + date.toJSON() + " }", success: function (result) { //do something }, error: function (req, status, error) { //error } });