如何根据服务器日期格式设置jQuery UI datepicker的日期格式?

时间:2014-01-23 10:23:21

标签: jquery asp.net asp.net-mvc jquery-ui datepicker

我正在使用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 个答案:

答案 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日期格式添加到模型中,并按照上面的描述输出。

更新 (问题作者)

似乎没有解决方案我正在寻找。所以这个将被标记为解决方案。更多信息 - 请参阅评论。