我想显示日期时间(我放在母版页上);在当前文化的基础上用不同的语言。
我在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();
}
在这里,我根据所选择的文化获得不同语言的日期字符串。但我不想使用Timer。有没有办法,我可以在不使用计时器的情况下实现这一点。谢谢。
答案 0 :(得分:1)
toLocaleDateString
使用客户端的区域设置(通常需要重新启动浏览器才能使更改生效),并且不一定与.NET线程中使用的区域性相关。
答案 1 :(得分:0)
您可以在web.config文件中定义它,如下所示:
<globalization enableClientBasedCulture="true" culture="auto:en-GB" uiCulture="auto:en"/>
这应该启用基于客户端的格式,而如果未由客户端
定义则选择默认值修改为您的派生结果的nessecary。
如果您只想在特定页面上设置此项,请设置Date.format = 'yyyy-mm-dd';
在你的javascript函数之外。
//此致
答案 2 :(得分:0)
尝试使用它,
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日期时间库的“toString”函数。
答案 3 :(得分:0)
当您使用ScriptManager控制页面时,您可以使用Microsoft Ajax Date对象扩展。为此,将ScriptManager的EnableScriptGlobalization
属性设置为true
。然后你可以使用这个脚本:
var localDate = new Date().localeFormat("F");
有关Microsoft Ajax扩展的更多信息,请访问:Microsoft Ajax JavaScript Base Type Extensions