在我们12台服务器的生产环境中,我们遇到了代码问题
var date = DateTime.Parse("Thu, 10 Mar 2011 13:15:33 GMT");
并且这不是所有的时间,只是在几个服务器上(每月一次)它会抛出
System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String, DateTimeFormatInfo, DateTimeStyles)
日期“星期四,2011年3月10日13:15:33 GMT”是一个真实的例子,今天它来自另一个环境,并以下列方式创建
string.Format("{0:R}", ExpiresOn.ToUniversalTime())
第二天,我们将服务器重新插入服务器场,它们将继续正常运行。
谢谢
答案 0 :(得分:1)
始终使用CultureInfo.InvariantCulture
。这是一条规则。使用它来解析日期,数字(特别是浮点数/双打/小数),ToString(ing)日期,数字(特别是浮点数/双打/小数)等。如果你处理日期,总是想想它是否会更好以UTC或当地时区处理它们。如果您必须处理多个时区中服务器/人员之间的协调,请始终使用(存储)UTC日期。
答案 1 :(得分:0)
这是我根据之前的回答提出的内容
var original = DateTime.Now;
var stringified = original.ToString("r",CultureInfo.InvariantCulture);
并在消费者端/服务器上
var restored = DateTime.ParseExact(stringified, "r", CultureInfo.InvariantCulture);
我们做了一些测试,到目前为止看起来不错。 如果您觉得我错了或者可以做得更简单,请告诉我。谢谢。