将日期值从 Ajax 调用传递到 MVC
本文关键字:MVC 调用 Ajax 日期 | 更新日期: 2023-09-27 17:57:14
MY Ajax 调用
$('#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);
}
});
});
我的 C# 代码
public ActionResult SetMeeting(string ComputerName, DateTime? _mStart, DateTime? _mEnd)
{
}
代码结束时不会收到日期时间值.....它们只是显示为空白。在jquery中,当我尝试
'_mStart': now.toTimeString(),
'_mEnd': now.toDateString()
到 DateString 确实返回今天的日期,但是,我也想要日期时间的时间部分。
不要对数据格式做任何技巧。只需使用标准函数 date.toISOString() 以ISO8601格式返回。
来自 JavaScript
$.post('/example/do', { date: date.toISOString() }, function (result) {
console.log(result);
});
从 C#
[HttpPost]
public JsonResult Do(DateTime date)
{
return Json(date.ToString());
}
将 json 日期转换为这种格式 "mm/dd/yyyy HH:MM:ss" 是整个技巧dateFormat 是一个 jsondate 格式的函数.js文件位于http://blog.stevenlevithan.com/archives/date-time-format
var _meetStartTime = dateFormat(now, "mm/dd/yyyy HH:MM:ss");
您不能只传递一个 DateTime,并将服务器上的日期部分与时间部分分开吗?
你能不能只通过"_mDate":现在;
public ActionResult SetMeeting(string ComputerName, DateTime? _mDate)
{
// Then in here use _mDate.Date, and _mDate.Time
}
为什么不将日期(和时间)转换为Unix时代的时间戳,然后使用js显示日期?
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();
使用这种方法,您可以在 json 中将纪元作为字符串传递,然后像 js 中的日期一样处理它。
这与格式有关。你绝对可以使用库或插件,我选择保持非常简单:
function getFormattedDate(date) {
var curr_date = date.getDate();
var curr_month = date.getMonth() + 1; //Months are zero based
var curr_year = date.getFullYear();
return curr_date + "-" + curr_month + "-" + curr_year;
}
吻!