我的服务器在美国,我的客户在印度。
我尝试编写一个函数,当我通过美国格式时可以返回英国日期,反之亦然。但它不起作用。
// 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。
答案 0 :(得分:1)
首先,您应始终以UTC格式保存日期 - 而不是本地时间格式。如果可以的话,也不要将日期保存为字符串(我猜不可避免地使用XML),但强类型,例如SQL Server支持DateTime
数据类型。从UTC开始,您可以转换为您想要的任何本地 - 用于显示目的。
要解析具有已知格式的特定日期字符串,您可以使用ParseExcact
或TryParseExcact
,以便传入确切的格式字符串。
答案 1 :(得分:0)
错误是因为您传递的是美式约会并指定了英国文化。
这有效
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"));
我不确定你要做的是正确的,正如其他答案所指出的那样。