如何刷新短时间字符串(C#DateTime.Now)?

时间:2015-07-04 11:42:38

标签: c# winforms datetime

我正在使用Windows窗体制作记事本程序,并且日期/时间功能出现问题:

我的系统时间和日期格式(短)是hh:mm tt M / d / yyyy。当我在记事本中按F5(日期/时间功能)时,它会添加一个时间字符串,格式如上所示。然后我将系统时间和日期格式更改为HH:mm dd-MMM-YY并在记事本中再次按F5,它会添加另一个时间字符串,其格式为我已更改。

但是使用我的记事本项目(我使用DateTime.Now.ToShortTimeString()DateTime.Now.ToShortDateString()来执行此功能),如果我希望格式在我的程序中生效,我必须再次启动程序,否则它将会无论我按F5多少次,都使用第一种格式。

所以我想问一下是否有办法解决这个问题。

我正在使用VS 2013.

2 个答案:

答案 0 :(得分:7)

非常好的问题。日期根据当前用户文化信息进行格式化,但信息由.NET缓存。您需要做的是强制.NET通过事先调用CultureInfo.ClearCachedData方法来清除缓存。

此处提供更多信息:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.clearcacheddata(v=vs.80).aspx

另请注意,每次用户想要插入日期和时间时清除缓存。时间在某种程度上错过了缓存的点(好吧,我夸张了一点)。当系统告诉您其配置已更改时,您只能清除缓存。您可以通过收听SystemEvents.UserPreferenceChanged事件来完成此操作。更多信息请点击此处:How to receive event when user changes system's culture

答案 1 :(得分:1)

请参阅SystemEvents课程,UserPreferenceChang * events。