【问题标题】:Why is my ASP.Net Date Format Changing Erratically?为什么我的 ASP.Net 日期格式变化不规律?
【发布时间】:2010-10-08 18:26:47
【问题描述】:

我有一个绑定到 SqlDataSource 的 asp.net 4.0 Formview,托管在 IIS7 上,我正在显示一个编辑日期,如下所示:

<input id="OrderDateTextBox" type="text" value='<%# Eval("OrderDate", "{0:d}") %>' />

这通常按预期工作,但有时日期格式显示 d/m/y 而不是 m/d/y。发生这种情况时,页面刷新将显示正确的日期格式。

到目前为止,我已经尝试在 web.config 中设置默认文化,如下所示:

<globalization enableClientBasedCulture="false" culture="en-US" uiCulture="en-US" />

我也尝试过在初始化时设置文化:

protected override void InitializeCulture()
{
    UICulture = "en-US";
    Culture = "en-US";
    Thread.CurrentThread.CurrentCulture =
        CultureInfo.CreateSpecificCulture("en-US");
    Thread.CurrentThread.CurrentUICulture =
        new CultureInfo("en-US");

    base.InitializeCulture();
}

这些方法似乎都没有任何效果。但是,如果我使用以下语法提取值,则日期格式始终正确:

<%# DateTime.Parse(Eval("OrderDate").ToString()).ToString("d", CultureInfo.CreateSpecificCulture("en-US")) %>

但这不应该是必要的。感谢您的帮助。

【问题讨论】:

  • 你确定这些是随机的吗?您看到的事件有什么共同点吗?
  • 嗯,它似乎发生在一段时间不活动之后,也许是在会话到期之后?

标签: asp.net webforms date-format


【解决方案1】:

除了使用{0:d} 并根据文化来格式化日期,您可以尝试将日期强制为您希望的格式。示例:

<%# Eval("OrderDate", "{0:MM/dd/yyyy}") %>

【讨论】:

  • 行得通!我仍然想知道为什么有必要这样做,以防文化也影响其他环境,但这会有所帮助。谢谢!
  • 我不是 .NET 文化变革方面的专家,但我知道如何格式化日期。很高兴这对您有所帮助!
猜你喜欢
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 2014-09-24
相关资源
最近更新 更多