jQuery datepicker的dateFormat – 如何与.NET当前文化DateTimeFormat集成

我在.NET ASP MVC3内部网应用程序中使用jQuery的datepicker插件。 使用应用程序的用户在不同国家和地区设有办事处。 这就是我想将Thread.CurrentThread.CurrentCulture.DateTimeFormatjQuery datepicker插件集成的原因。 我的第一个解决方案是创建辅助扩展方法:

public static string jQueryDatePickerFormat(this HtmlHelper helper) { return Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern; } 

并在javascript中设置dateFormat选项,如下所示:

 $("#StartDate").datepicker({ dateFormat: '@Html.jQueryDatePickerFormat()' }); 

在我意识到datepicker的dateFormat选项支持与.NET中的格式具有不同实现的格式之后不久。

例如:pl-PL的Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern返回yyyy-MM-dd (它将日期格式化为2010-01-01),而datePicker中的相同格式将格式化与20102010年1月01日相同的日期。 我很快调整了我的辅助方法并应用了快速修复替换(“yyyy”,“yy”)。替换(“MM”,“mm”)

  public static string jQueryDatePickerFormat(this HtmlHelper helper) { return Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern.Replace("yyyy", "yy").Replace("MM", "mm"); } 

我工作,但我等待其他问题出现的那一刻。 有没有简单的方法将.NET语言环境设置实现到jQuery的datePicker插件中?

谢谢你,帕维尔

ASP.NET MVC中的代码项目文章JQueryUI Datepicker http://www.codeproject.com/Articles/62031/JQueryUI-Datepicker-in-ASP-NET-MVC具有完全符合您要求的function

  /// Converts the .net supported date format current culture /// format into JQuery Datepicker format. ///  /// HtmlHelper object. /// Date format supported by .NET. /// Format string that supported in JQuery Datepicker. public static string ConvertDateFormat(this HtmlHelper html, string format) 

我还发布了一个相反的function – 将jQuery UI Datepicker格式转换为.Net Date格式

我前段时间对这个问题进行了总结。 我采取的路径只是将jQuery datepicker提供给我的任何东西转换为milis(.getTime())。 知道javascript时间基于1,1,1970的日期和.NET的1,1,0我能够在我的控制器端进行计算

因此,假设您将javscript DateTime.getTime()值传递给控制器​​,您可以;

 var myDate = new DateTime(1970, 1, 1) + new TimeSpan(time * 10000); 

在你看来你可以;

  $.datepicker.setDefaults($.datepicker.regional["pl"]); $("#StartDate").datepicker({ dateFormat: "yy-mm-dd", onSelect: function (dateText) { var currentDate = new Date(dateText); time = currentDate.getTime(); // $.post | $.ajax here - whatever you need } }); 

您将需要记住TimeZones以及javascript在计算日期时将其考虑在内的事实。

存放在隐藏的领域

   @Html.HiddenFor(model=>model.StartDate) @Html.HiddenFor(model=>model.EndDate)