以美国格式保存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。

以美国格式保存DateTime,以英国格式显示

首先,您应该始终将日期保存为UTC,而不是本地时间格式。如果可以的话,也不要将日期保存为字符串(我想这对XML来说是不可避免的),而是强类型的,例如SQL Server支持DateTime数据类型。然后,您可以从UTC转换为所需的任何本地-以用于显示

为了解析具有已知格式的特定日期字符串,您可以使用ParseExcactTryParseExcact,以便传入确切的格式字符串。

错误是因为您传入了一个美式日期并指定了一个英国区域性。

这适用于

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"));

我不确定你想做的是否像其他答案中指出的那样正确。