如何将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
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) ; }`