Pass Date Values from Ajax Call to MVC
Solution 1
Don't do any tricks with data formats. Just use standard function date.toISOString() which returns in ISO8601 format.
from javascript
$.post('/example/do', { date: date.toISOString() }, function (result) {
console.log(result);
});
from c#
[HttpPost]
public JsonResult Do(DateTime date)
{
return Json(date.ToString());
}
Solution 2
Converting the json date to this format "mm/dd/yyyy HH:MM:ss" is the whole trick dateFormat is a function in jsondate format.js file found at http://blog.stevenlevithan.com/archives/date-time-format
var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
Solution 3
Can you not just pass one DateTime up, and separate the Date part from the time part on the server?
Can you not just pass '_mDate': now;
public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
// Then in here use _mDate.Date, and _mDate.Time
}
Solution 4
Why not convert the date (and time) into a timestamp from Unix Epoch and then use js to display the date?
c#
public double FromUnixEpoch(DateTime value)
{
DateTime unixEpoch = new DateTime(1970, 1, 1);
double timeStamp = (value - unixEpoch).Ticks / 1000;
return timeStamp;
}
js
var myDate = new Date( object.myEpochDate *1000);
myDate.toUTCString().toLocaleString();
With this approach you can pass the epoch as a string inside json and then handle it like a date in js.
Nanu
Updated on May 30, 2020Comments
-
Nanu almost 4 years
MY Ajax call
$('#QuickReserve').click(function () { var now = new Date(); alert(now); var _data = { 'ComputerName': _computerName, '_mStart': now.toTimeString(), '_mEnd': now.toDateString() }; $.ajax({ cache: false, // contentType: "application/json; charset=utf-8", type: "POST", async: false, url: "/Home/SetMeeting", dataType: "json", data: _data, success: "", error: function (xhr) { alert("Error"); alert(xhr.responseText); } }); });
MY C# code
public ActionResult SetMeeting(string ComputerName, DateTime? _mStart, DateTime? _mEnd) { }
DateTime values are not received at code end..... They just appear blank. In jquery when i tried to
'_mStart': now.toTimeString(), '_mEnd': now.toDateString()
to datestring does return today's date, but, i want time part of date time also.
-
Nanu almost 13 yearsOnly date part is sent successfully, not the timepart
-
ETFairfax almost 13 yearsCan you not just pass '_mDate': now
-
Nanu almost 13 yearsI want to pass date from js to c#, and not the other way around.
-
gnome almost 13 yearsSorry Nikhil, misunderstood you. Is JS convert the datetime to unix epoch, var myDate= new Date(); var unixEpoch = myDate.getTime(); In C# convert it from unix epoch: public DateTime fromUnixEpoch(long epoch) { return (new DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(epoch); }
-
Nanu almost 13 yearsI came up with an easy solution, i formatted the json date to the "mm/dd/yyyy HH:MM:ss" format, and it worled like magic. Thanks
-
Luke Vo almost 9 yearsThis is the correct answer, the marked answer is depend on the server's system date format.
-
Janco de Vries almost 5 yearsCan't use this you want to receive the date from a datepicker. Any alternatives for when I want to receive a date from a datepicker?