【问题标题】:DataFormatString Working On My Local Machine, But Not When Upload to HostDataFormatString 在我的本地机器上工作,但在上传到主机时不行
【发布时间】:2015-05-11 18:53:27
【问题描述】:

DataFormatString 在我的本地机器上工作,但在上传到主机时不行。 gridview 中的 tarih 列。为什么以及如何解决?

asp:BoundField DataField="tarih" HeaderText="tarih" SortExpression="tarih" DataFormatString="{0:MM/dd/yyyy H:mm:ss}" HtmlEncode="假"

结果:
在本地:11.05.2015 18:44:07
主持人:2015 年 5 月 11 日下午 6:56:03 +03:00

【问题讨论】:

  • 日期格式可能取决于运行它的机器中“区域设置”的设置。
  • @jcoppens 还有其他方法可以转换日期吗?

标签: asp.net gridview


【解决方案1】:

ETA:有一个误会,我以为你想要的是 5/11/2015 6:56:03 PM 而不是 11.05.2015 18:44:07。您的 DataFormatString="{0:MM/dd/yyyy H:mm:ss}" 会给你第一个(你说你不想要),美国全球化也会给你那个。

将 web.config 全球化设置更改为:

<globalization culture="tr-Tr" /> 

或者把它放在你的页面上:

<%@ Page Culture="tr-Tr" %>

将您的 DataFormatString 更改为: DataFormatString="{0:dd.MM.yyyy HH:mm:ss}"

我原来的答案会以相反的方式切换: 您可以尝试更改 web.config 文件中的全球化设置:

    <globalization culture="en-US" />

https://msdn.microsoft.com/en-us/library/bz9tc508(v=vs.85).aspx。 您还可以考虑将日期格式更改为 YYYY-MM-DD hh:mm:ss,因为这是国际标准日期时间格式。

【讨论】:

  • 您的页面上是否有任何文化信息可能会覆盖 web.config?
  • public void tarihYaz(string id) { var info = TimeZoneInfo.FindSystemTimeZoneById("土耳其标准时间"); DateTimeOffset localServerTime = DateTimeOffset.Now; DateTimeOffset istanbulTime = TimeZoneInfo.ConvertTime(localServerTime, info); //OutputLabel.Text += istanbulTime; baglanti2.Open(); komut2.CommandText = "更新 BilgisayarDuyuru SET tarih='" + istanbulTime + "' WHERE id='" + id + "'"; komut2.ExecuteNonQuery(); baglanti2.Close(); }
  • 您的主机是否在土耳其全球化上运行?因为那不支持月份的第一个日期时间。事实上,它看起来甚至不支持通用日期时间。尝试使用与文化无关的 DateTimeFormatInfo.InvariantInfo(与解析一起使用),并查看此网站:moserware.com/2008/02/does-your-code-pass-turkey-test.html
  • 我很难理解。如何在我的代码中使用 DateTimeFormatInfo.InvariantInfo ?
  • 好吧,我以为你想要的是 5/11/2015 6:56:03 PM +03:00 而不是 11.05.2015 18:44:07。请看我修改后的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 1970-01-01
相关资源
最近更新 更多