我遇到了无法识别DateTime字符串的问题。使用我们的许可计划,您将生成一个与其关联的过期DateTime的密钥。但是,我们在世界其他地方的一些客户无法应用此密钥,而返回的错误是“字符串未被识别为有效的DateTime”。
我查看了发送给他们的密钥,在解密后,DateTime看起来很好。在我需要考虑的世界不同地区如何格式化DateTimes时是否存在差异? (现在我假设.NET会“弄明白”,我现在认为可能不是这样)如果是这样的话,我将如何格式化DateTime以便它可以在任何部分工作世界?
编辑这是DateTime字符串:“10/16/2122 4:36:17 PM”
答案 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);