我正在使用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(); }
})
答案 0 :(得分: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日期格式添加到模型中,并按照上面的描述输出。
更新 (问题作者)
似乎没有解决方案我正在寻找。所以这个将被标记为解决方案。更多信息 - 请参阅评论。