如何根据服务器日期格式为 jQuery UI datepicker 设置 dateFormat?
Posted
技术标签:
【中文标题】如何根据服务器日期格式为 jQuery UI datepicker 设置 dateFormat?【英文标题】:How to set dateFormat for jQuery UI datepicker according to server date format? 【发布时间】:2014-02-13 19:59:15 【问题描述】:我正在使用 ASP.NET MVC 并使用两台服务器。在第一台服务器(用于测试)上,日期格式设置为 dd.mm.yy
,但在第二台服务器上 - mm/dd/yy
。问题是:是否可以根据站点工作的服务器日期格式为 jQuery UI datepicker 自定义 dateFormat?
呈现日期:
<%=html.EditorFor(p=>Model.myDate)%>
javascript 代码示例:
$('#myDate').datepicker(
dateFormat: 'dd.mm.yy',
onSelect: function (dateText) doSomething(); ,
onClose: function () doAction();
)
是否可以将强类型的dateFormat: 'dd.mm.yy'
替换为根据服务器日期格式格式化日期的东西?如果“是” - 怎么做?
目前,我正在使用一些临时解决方案:
$('#myDate').datepicker(
dateFormat: $("#myDate").val().indexOf('/') > 0 ? 'mm/dd/yy' : 'dd.mm.yy',
onSelect: function (dateText) doSomething(); ,
onClose: function () doAction();
)
【问题讨论】:
【参考方案1】:您可以在控件上强制执行格式,即
@Html.TextBoxFor(m => m.OrderDate, String.Format("0:dd/M/yy", Model.YourDate),
new @class = "datepicker datepicker-init" )
jQuery UI 采用稍微不同的日期格式,即 dd/mm/y
而不是 mm/dd/yy
就像您的问题一样。
这样就可以了:
<script type="text/javascript">
$(".datepicker").datepicker(
minDate: 0,
dateFormat: 'dd/mm/y'
);
</script>
看这里:
http://jsfiddle.net/hutchonoid/Fa8Xx/1376/
如果这不好,您可以确定格式,并将其设置在您的 ViewModel 上,即
<script type="text/javascript">
$(".datepicker").datepicker(
minDate: 0,
dateFormat: '@Model.MyDateFormat'
);
</script>
更新
好的,要确定日期是否有正斜杠,您可以执行以下操作:
创建一个字符串扩展名,以任一方式替换它们;
public static string ContainsForwardSlashReplace(this string aString)
return aString.Contains("/") ? aString.Replace("/",".") : aString.Replace(".","/");
然后在您的控制器中对您的格式化日期调用它,用于您返回的日期和您的 jQueryUI 格式。
下面是一个简单的控制台示例:
var aDate = DateTime.Now.ToString("d");
// Change below to the oposite that is returned from above to test to other way
//var aDate = "23/01/2014";
var jqueryUiFormat = "dd/mm/y";
string newDate = aDate.ContainsForwardSlashReplace();
string newjQueryUiFormat = jqueryUiFormat.ContainsForwardSlashReplace();
Console.WriteLine("Original Date: 0", aDate);
Console.WriteLine("Replaced Date: 0", newDate);
Console.WriteLine("Original jQueryFormat : 0", jqueryUiFormat);
Console.WriteLine("Replaced jQueryFormat: 0", newjQueryUiFormat);
最后一步是将格式化日期和 jQuery ui 日期格式添加到您的模型中,并按照我上面的描述进行输出。
更新 (由问题作者)
似乎没有我正在寻找的解决方案。所以这个将被标记为解决方案。有关更多信息 - 请参阅 cmets。
【讨论】:
我澄清了问题(添加日期输入呈现示例)。至于 jQuery UI 采用稍微不同的日期格式,即dd/mm/y
而不是 mm/dd/yy
在你的问题中。 - 我尝试格式 mm/dd/y
及其工作。
说到@Model.MyDateFormat
- 这是个好主意。
这不是我想要的。
我明白你的意思,对不起,但我没有找到解决方法,除了上面包含在呈现 TextBoxFor 的模板的自定义编辑器中之外,它不包括 TextBoxFor下。希望有人会为您提供完整的答案。祝你好运。 :)
无论如何,非常感谢您的帮助。以上是关于如何根据服务器日期格式为 jQuery UI datepicker 设置 dateFormat?的主要内容,如果未能解决你的问题,请参考以下文章
具有初始值的 JQuery UI Datepicker 日期格式问题
jQuery UI Datepicker 将备用字段填充并格式化为 MySQL 日期
如何在 JQuery UI Datepicker 中使用不同的日期格式(用于在 html 上显示和存储在数据库中)?