jQuery datepicker dateFormat – comment intégrer la culture actuelle .NET DateTimeFormat

J’utilise le plugin datepicker de jQuery dans l’application intranet .NET ASP MVC3. Les utilisateurs qui utilisent l’application ont des bureaux dans différents pays et selon différents parameters régionaux. C’est pourquoi je voulais intégrer Thread.CurrentThread.CurrentCulture.DateTimeFormat avec le plugin jQuery datepicker . Ma première solution a été de créer une méthode d’extension d’assistance:

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

et définissez l’option dateFormat en javascript comme ceci:

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

Peu de temps après, j’ai réalisé que l’option dateFormat de datepicker prenait en charge des formats dont la mise en œuvre était différente de celle du format .NET.

Par exemple: Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern pour pl-PL renvoie aaaa-MM-jj (il sera formaté en tant que date le 2010-01-01), alors que le même format dans datePicker sera formaté à la même date que 20102010 janvier 01 . J’ai rapidement adapté ma méthode d’assistance et appliqué la solution rapide Remplacer (“aaaa”, “aa”). Remplacer (“MM”, “mm”) :

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

Je travaille, mais j’attends le moment où d’autres problèmes vont émerger. Existe-t-il un moyen simple d’implémenter les parameters régionaux .NET dans le plugin datePicker de jQuery?

Merci Pawel

L’article codeproject JQueryUI Datepicker dans ASP.NET MVC http://www.codeproject.com/Articles/62031/JQueryUI-Datepicker-in-ASP-NET-MVC a une fonction qui fait exactement ce que vous vouliez

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

J’ai également posté une fonction qui fait l’inverse: convertir le format Datepicker de l’interface utilisateur jQuery en format de date .Net

Je suis tombé sur le même problème il y a quelque temps. Le chemin que j’ai emprunté consistait simplement à convertir ce que jQuery datepicker me fournisse en milis (.getTime ()). Sachant que le temps javascript est basé sur la date de 1,1,1970 et .NET sur 1,1,0, je peux effectuer le calcul du côté de mon contrôleur.

En supposant que vous transmettiez la valeur javscript DateTime.getTime () à votre contrôleur, vous le pouvez;

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

à votre avis, vous pourriez

  $.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 } }); 

Vous voudrez vous rappeler de TimeZones et du fait que javascript en tient compte lors du calcul des dates.

stocker dans un champ caché

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