将日期从输入转换为Date对象

时间:2017-08-31 06:12:11

标签: javascript asp.net-mvc date momentjs

我输入了选择日期的地方。

这是输入代码

<div class="input-group date" style="margin: 0 auto;padding-top: 20px;" id="picker">
    <input id="startAppointment" type="text" class="form-control"  placeholder="Enter Start Appointment" />
    <span style="width: 20px; height: 33px;" class="input-group-addon">
        <span class="glyphicon glyphicon-calendar" style="color: #1d69b4;background:transparent !important;border:none;"></span>
    </span>
</div>

这是我将数据传递给后端的代码

<script>
$('#save_appointment').click(function () {
    addAppointmentInternal();
});
function addAppointmentInternal() {
    $.ajax({
        type: 'Post',
        dataType: 'Json',
        data: {
            Start: $('#startAppointment').val(),
            End: $('#endAppointment').val(),
            Title: $('#title').val(),
            Date:$('#startAppointment').val(moment().toDate())
        },
        url: '@Url.Action("AddingInternalAppointment","Calendar")',
        success: function (da) {
            if (da.Result === "Success") {
                $('#calendar').fullCalendar('refetchEvents');
                $("#myModal2").modal();
            } else {
                alert('Error' + da.Message);
            }
        },
        error: function(da) {
            alert('Error');
        }
    });
}

在后端我有这段代码

public ActionResult AddingInternalAppointment(string Start, string End, string Title)
    {
        DateTime dt = DateTime.Today;

        Appointment appointmentInt = new Appointment()
        {
            Start_appointment = Start,
            End_appointment = End,
            Title = Title,
            Type_of_appointment = "Internal",
            Date = dt
        };
        db.Appointments.Add(appointmentInt);
        db.SaveChanges();
        return Json(new { Result = "Success", Message = "Saved Successfully" });
    }

现在我在后端添加Date作为Date对象,但是我需要从前端传递数据并以8/30/2017格式date格式写入。

我尝试这样做Date:$('#startAppointment').val(moment().toDate()),但它不起作用。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

假设你有这个动作:

public ActionResult AddingInternalAppointment(string Start, string End, string Title, DateTime Date)
{
    ...
}

使用从Date: $('#startAppointment').val(moment().toDate())分配转换日期的startAppointmentmoment元素,而不转换为C#兼容DateTime格式(仍使用JavaScript格式,这将导致无效值错误)。您需要在没有任何参数的情况下使用jQuery选择器中的val&amp;将提取的值转换为基于moment的格式:

moment($('#startAppointment').val())

然后,添加toISOString方法可确保moment处理转换后的日期值&amp;以UTC格式发送,在AJAX调用期间由DateTime参数识别:

Date: moment($('#startAppointment').val()).toISOString()

之后,您可以使用ToStringString.Format将提交日期转换为美国日期格式进行展示。