以美国格式保存DateTime,以英国格式显示
本文关键字:格式 英国 显示 保存 美国 DateTime | 更新日期: 2023-09-27 18:26:33
我的服务器在美国,我的客户端在印度。
我试着写一个函数,当我通过美国格式时,它可以返回英国日期,反之亦然。但它不起作用。
// client culture
System.Globalization.CultureInfo UKcultureInfo = new System.Globalization.CultureInfo("en-gb");
// server culture
System.Globalization.CultureInfo UScultureInfo = new System.Globalization.CultureInfo("en-us");
public DateTime ReturnUKDate(string date)
{
return DateTime.Parse(date, UKcultureInfo);
}
但当我通过ReturnUKDate("12/29/2012")时
我得到这个错误字符串没有被识别为有效的DateTime。
首先,您应该始终将日期保存为UTC,而不是本地时间格式。如果可以的话,也不要将日期保存为字符串(我想这对XML来说是不可避免的),而是强类型的,例如SQL Server支持DateTime
数据类型。然后,您可以从UTC转换为所需的任何本地-以用于显示。
为了解析具有已知格式的特定日期字符串,您可以使用ParseExcact
或TryParseExcact
,以便传入确切的格式字符串。
错误是因为您传入了一个美式日期并指定了一个英国区域性。
这适用于
var dt = DateTime.Parse("12/29/2012", new System.Globalization.CultureInfo("en-us"));
这个也是
var dt = DateTime.Parse("29/12/2012", new System.Globalization.CultureInfo("en-gb"));
我不确定你想做的是否像其他答案中指出的那样正确。