【问题标题】:Display date on the basis of culture根据文化显示日期
【发布时间】:2012-08-23 13:58:25
【问题描述】:

我想显示日期时间(我已放置在母版页上);在当前文化的基础上使用不同的语言。

我在 master 上的 javascript 代码:

    <script type="text/javascript">
        var t;
        $(document).ready(function pageLoad() {
            setTimeout('SetTime()', 1000);
        });

        function SetTime() {
            var date = new Date();
            date.format = 'MM.DD.YYYY';
            $get('<%=lbl.ClientID %>').innerHTML = date.toLocaleDateString() + " : " + date.toLocaleTimeString();
            setTimeout("SetTime()", 1000);
        }  

    </script>

即使我设置了不同的文化,它总是以英语显示日期时间字符串:法语或其他任何语言。

我通过母版页的代码隐藏文件尝试了其他方式:

 protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    Timer1.Tick += new EventHandler<EventArgs>(Timer1_Tick);
}

void Timer1_Tick(object sender, EventArgs e)
{
    Label2.Text = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString();
    UpdatePanel1.Update();
}

在这里,我根据选择的文化获取不同语言的日期字符串。但我不想使用定时器。有什么办法,我可以在不使用计时器的情况下实现这一点。谢谢。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    试试这个,

    function SetTime() {
        var date = new Date();
        var dateFormat = '<%=System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern%>';
        var timeFormat = '<%=System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern%>';
         var datetimeFormat = dateFormat + " " + timeFormat;
         var cultureSpecificValue= date.toString(datetimeFormat);
        alert(cultureSpecificValue);
    
       //Your Code
    
    }
    

    我在上面的代码中使用了Datejs datetime 库的“toString”函数。

    【讨论】:

      【解决方案2】:

      toLocaleDateString 使用客户端的区域设置(通常需要重新启动浏览器才能使更改生效),并且不一定与 .NET 线程中使用的文化相关。

      【讨论】:

        【解决方案3】:

        您可以在 web.config 文件中定义它,如下所示:

        &lt;globalization enableClientBasedCulture="true" culture="auto:en-GB" uiCulture="auto:en"/&gt;

        这应该启用基于客户端的格式,如果客户端没有定义,则选择默认格式

        根据您想要的结果进行修改。

        如果您只想在特定页面上进行设置,请将Date.format = 'yyyy-mm-dd'; 在您的 javascript 函数之外。

        //问候

        【讨论】:

          【解决方案4】:

          由于您拥有 ScriptManager 控件和页面,因此您可以使用 Microsoft Ajax Date 对象扩展。为此,将 ScriptManager 的 EnableScriptGlobalization 属性设置为 true。然后你可以使用这个脚本:

          var localDate = new Date().localeFormat("F");
          

          更多关于 Microsoft Ajax 扩展的信息:Microsoft Ajax JavaScript Base Type Extensions

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-14
            • 2022-01-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多