【问题标题】:How to format JS Date as a C# compatible DateTime?如何将 JS Date 格式化为 C# 兼容的 DateTime?
【发布时间】:2016-07-28 11:07:32
【问题描述】:

我已将 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 日期字符串值绑定到 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);
    }
}

【问题讨论】:

  • “C#兼容的日期时间”的格式是什么?

标签: javascript c# date datetime format


【解决方案1】:

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

在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();

【讨论】:

  • 好吧,在 JS 方面,我尝试执行以下操作,但开发工具控制台告诉我 e.getTime 不是函数? $("#OutageStartDisplay").on("dp.change", function (e) { $('#OutageStart').val(e.getTime()); }
  • @BrianJ 试试 e.date.getTime()
【解决方案2】:

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

$('#OutageStart').val(new Date(e.date));

【讨论】:

  • 不起作用,将时区的全名添加到日期字符串中。
【解决方案3】:

在js中

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

在c#中

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

【讨论】:

  • 您确定 $.datepicker.formatdate 是 javascript 的一部分,还是您依赖一个或多个库来实现该功能?
  • 这是一个日期选择器库函数。你使用日期选择器不是吗?我已经实施了它,并且从过去的几个月开始它运行良好。
  • 它符合问题推断的技术,但很高兴注意到它不是 javascript 的一部分。 OP 没有用正在使用的库标记这个问题,所以其他人偶然发现这个答案可能会对为什么它对他们不起作用感到困惑。 ;-) 哦,我是否使用“日期选择器”无关紧要。
猜你喜欢
  • 2011-10-19
  • 2021-11-14
  • 1970-01-01
  • 2012-02-13
  • 2014-01-25
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
相关资源
最近更新 更多