如何将JS Date格式化为与C#兼容的DateTime

本文关键字:DateTime JS Date 格式化 | 更新日期: 2023-09-27 17:59:00

我已经将Javascript DateTime选择器日期从视图传递给MVC控制器操作。

当传递给控制器动作时,字符串的格式为Thu Jul 28 2016 17:05:00 GMT+0100,这会导致C#中的invalid operation exception converting String to DateTime.

这就是我将日期选择器的值分配给隐藏字段值的方式:

$('#OutageStart').val(e.date)

如何将JS日期字符串格式化为与C#兼容的DateTime?

绑定错误是在试图将JS Date字符串值绑定到Nullable<DateTime>:的C#自定义模型绑定器中抛出的

public class DateTimeBinder : System.Web.Mvc.IModelBinder
{

    public object BindModel(ControllerContext controllerContext, System.Web.Mvc.ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        bindingContext.ModelState.SetModelValue(bindingContext.ModelName, value);
        return value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);
    }
}

如何将JS Date格式化为与C#兼容的DateTime

或者,您可以使用时间戳进行转换,用户的时区不会影响您的结果

js

myDateObject.getTime() //-> outputs a timestamp (integer)

在c#中(如果你有.NET 4.6+)

DateTimeOffset.FromUnixTimeSeconds(timestamp);

否则

System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
dtDateTime = dtDateTime.AddSeconds(timestamp).ToLocalTime();

您尝试过使用新的Date()函数吗?在正常绑定中,这是有效的,但在您的自定义值中,我不确定,但如果这有帮助,请尝试。

$('#OutageStart').val(新日期(e.Date));

在js 中

Var date = $.datepicker.formatdate('dd/mm/yy',new Date(datepickerdate)

在c#中

Void convertdate(string javascriptdateinstringformat){
datetime.parse(javascriptdateinstringformat) ; }`