我在我的 .net 2.5 应用程序中硬编码了试用到期日期。我如何将它与用户的系统日期进行比较,以便无论用户的文化设置如何,比较都是准确的?
DateTime maxTrialDate = DateTime.Parse("11/17/2020", new System.Globalization.CultureInfo("en-US"));
DateTime curDate = DateTime.Parse(DateTime.Now.ToShortDateString(), new System.Globalization.CultureInfo("en-US"));
// 下一行代码使用 DateDiff 方法来比较两个日期 - 不要回忆它的 // 确切语法。
在我的 XP 机器上,如果 datetime 的控制面板区域设置为 en-US,则上述方法有效,但如果我将其更改为 en-AU,则上述设置 curDate 的代码会触发 FormatException“Date is not in a correct string format”
如果避免使用字符串来表示日期,就不会遇到这个问题:
DateTime maxTrialDate = new DateTime(2020, 11, 17);
if (DateTime.Now.Date > maxTrialDate)
{
// expired
}
Run Code Online (Sandbox Code Playgroud)
在DateTime被明确定义的日,月,年组件创建,使区域设置不会混淆的问题。