asp.net mvc - 设置DateTime参数的语言环境/格式

时间:2016-01-04 13:06:13

标签: c# asp.net-mvc validation datetime bootstrap-datetimepicker

我正在使用bootrap datetime选择器允许用户输入日期,如下所示:

<div class="form-group">
    <label for="end">Start date:</label><br />
    <div class='input-group date' id='dt1'>
        @Html.TextBox("StartDateFilter", null, new { @class = "form-control" })
        <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>
</div>

<script type="text/javascript">
    $('#dt1').datetimepicker({
        format: 'L',
        locale: 'en-GB'
    });
</script>

然后将此日期作为以下方法签名中的参数选取:

public ActionResult Index(string sortOrder, string sortBy, string currentFilter, string searchString, string filterType, int? itemDisplay, int? page, DateTime? startDateFilter, DateTime? endDateFilter)

但是,文本框中的日期显示为DD / MM / YYYY,但是传递为MM / DD / YYYY,这会导致多个格式错误和解析错误。如何将参数中的DateTime对象的格式或局部更改为DD / MM / YYYY。

我已将以下内容添加到system.web下的web.config文件中:

<globalization culture="en-GB" uiCulture="en-GB" />

提前致谢。

2 个答案:

答案 0 :(得分:1)

你可以用这个

已更新

的global.asax

    protected void Application_Start()
    {
        GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings =
          new JsonSerializerSettings
      {
         DateFormatHandling = DateFormatHandling.IsoDateFormat,
         DateTimeZoneHandling = DateTimeZoneHandling.Unspecified,
         Culture = CultureInfo.GetCultureInfo("en-GB")
      };

         Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
    }

答案 1 :(得分:0)

使用DateTime.ParseExact方法格式化方法中的输入日期,如下所示:

DateTime sDate = DateTime.ParseExact(startDateFilter.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);

DateTime eDate = DateTime.ParseExact(endDateFilter.ToString(), "dd/MM/yyyy", CultureInfo.InvariantCulture);

这就是你想要的吗?