0

我遇到了无法识别 DateTime 字符串的问题。使用我们的许可程序,您可以生成一个具有与之关联的到期日期时间的密钥。但是,我们在世界其他地方的一些客户无法应用此密钥,并且返回的错误是“字符串未被识别为有效的日期时间”。

我查看了我发送给他们的密钥,解密后,DateTime 对我来说看起来不错。我需要考虑的世界不同地区的日期时间格式是否存在差异?(现在我假设 .NET 只会“弄清楚”,我认为现在可能并非如此)如果是这样,我将如何格式化我们的 DateTime 以便它可以在任何部分工作世界的?

编辑这是日期时间字符串:“10/16/2122 4:36:17 PM”

4

3 回答 3

3

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

例子:

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

您可以按照MSDN 自定义日期和时间格式帮助按照您需要的方式对其进行格式化。

于 2013-04-11T14:44:05.383 回答
2

我的猜测是您的密钥是这样生成的:

string key = date.ToString();

这将为不同的国家提供不同的结果。
通过给出修复格式使密钥唯一生成:

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

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

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

进一步阅读这里
在这里您可以找到您梦寐以求的所有日期格式。

于 2013-04-11T14:45:15.170 回答
2

应该是文化问题吧。使用 InvariantCulture 确保您始终使用相同的格式

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

DateTime date = DateTime.Parse(datestring, System.Globalization.CultureInfo.InvariantCulture);
于 2013-04-11T14:48:37.903 回答