发出“无效”DateTime字符串

时间:2013-04-11 14:38:48

标签: .net datetime cultureinfo

我遇到了无法识别DateTime字符串的问题。使用我们的许可计划,您将生成一个与其关联的过期DateTime的密钥。但是,我们在世界其他地方的一些客户无法应用此密钥,而返回的错误是“字符串未被识别为有效的DateTime”。

我查看了发送给他们的密钥,在解密后,DateTime看起来很好。在我需要考虑的世界不同地区如何格式化DateTimes时是否存在差异? (现在我假设.NET会“弄明白”,我现在认为可能不是这样)如果是这样的话,我将如何格式化DateTime以便它可以在任何部分工作世界?

编辑这是DateTime字符串:“10/16/2122 4:36:17 PM”

3 个答案:

答案 0 :(得分:3)

我会尝试使用.ToString()方法来应用自定义格式。

示例:

string date = DateTime.Now.ToString("yyyy-MM-dd"); // International standard

您可以按照MSDN Custom Date and Time Format帮助按照您的需要进行格式化。

答案 1 :(得分:2)

我的猜测是你的密钥是这样产生的:

string key = date.ToString();

这会给不同国家带来不同的结果 通过提供修复格式使密钥唯一生成:

string key = date.ToString("yyyyMMdd");

然后您可以将其解析回所有国家/地区的日期:

var date = DateTime.ParseExact(key, "yyyyMMdd", CultureInfo.InvariantCulture);

进一步阅读here And here you can find all the date format you have ever dream of.

答案 2 :(得分:2)

这可能是一种文化问题。 使用InvariantCulture确保始终使用相同的格式

string datestring  = DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)

DateTime date = DateTime.Parse(datestring, System.Globalization.CultureInfo.InvariantCulture);