c# - 服务器的全局文化在不同服务器上不同时的 DateTime 问题

标签 c# asp.net sql datetime-format

我的网站托管在不同位置的多台服务器上

数据格式的文化在任何地方都是不同的 - 我们在任何地方都使用 mm/dd/yyyy 格式,但以防某些服务器将文化设置为 dd/mm/yyyy 然后我们的网站生成日期时间异常。

最佳答案

无论何时将字符串转换为日期,您都应该指定要使用的文化。

您应该使用的文化取决于日期的格式设置。例如,如果您要解析的所有日期的格式都为 斯洛伐克语:

String s = "24. 10. 2011";

然后您需要像在斯洛伐克语(斯洛伐克) ( sk-SK ) 文化中一样解析该字符串:

//Bad:
d = DateTime.Parse(s);

//Good:
d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("sk-SK")); //Slovak (Slovakia)

如果您的日期都是塔吉克语(塔吉克斯坦西里尔文),那么您需要将其解析为tg-Cryl-Tj。 :

String s = "24.10.11"

DateTime d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("tg-Cryl-Tj"));

这引出了一个问题:您使用的是什么日期格式?您不应该依赖于服务器的区域设置,您应该决定您想要的格式。

//Bad
String s = d.ToString();

//Good
String s = d.ToString(CultureInfo.CreateSpecificCulture("si-LK")); //Sinhala (Sri Lanka)

//s = "2011-10-24 12:00:00 පෙ.ව."

我怀疑你更喜欢用英语做所有事情。但随后您必须决定使用哪种英语变体:

  • en-AU (澳大利亚英语):24/10/2011
  • en-IA (英语印度):24-10-2011
  • en-ZA (英语南非):2011/10/24
  • en-US (美国英语):10/24/2011

我怀疑您更喜欢英语(印度) ( en-IA )。


但是,如果您真的无法决定在将日期转换为字符串时使用哪种文化,反之亦然,并且永远不会向用户显示日期,那么您可以使用不变文化:

String s = "10/24/2011" //invariant culture formatted date

d = DateTime.Parse(s, CultureInfo.InvariantCulture); //parse invariant culture date

s = d.ToString(CultureInfo.InvariantCulture); //convert to invariant culture string

关于c# - 服务器的全局文化在不同服务器上不同时的 DateTime 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874869/

相关文章:

css - scss 文件在本地工作但在部署中不起作用,在 chrome 中工作,在 IE 中不工作

c# - 使用 WebClient 获取远程图像生成颗粒状 GIF 且无法处理 PNG+BMP

c# - 我用C#代码下载文件时出现错误

c# - 尝试改进多页 TIFF 文件分割

c# - 使用环境变量加载 XDocument

c# - 在上下文中找不到某些词,缺少引用,大脑即将爆炸?

asp.net - 将 Active Directory 与我的应用程序同步

sql - 电话数据库主要关键问题

SQL 文件流身份验证最佳实践

mysql - 如何计算 MySQL 中两个表之间不匹配的行数?