Delphi:如何覆盖ShortDateFormat?

时间:2010-06-25 19:21:14

标签: delphi localization date-format

我意识到ShortDateFormat变量代表用户的偏好。

我也意识到如果设置改变,Delphi将使用用户的设置自动刷新ShortDateFormat变量。

mm/dd/yy

我的客户希望所有“短日期”都显示在特定内容中,但他们不希望自己的Windows偏好设置。

mm/dd/yyyy

在我的应用程序中,有什么好方法可以更改ShortDateFormat变量,因为它可以随时重置?

注意:包含代码格式的示例日期格式掩码,以使帖子更具视觉吸引力

2 个答案:

答案 0 :(得分:9)

拥有自己的FormatSettings并使用所有格式例程明确地使用它而不是使用隐式版本。

它还具有线程安全的优点。

function DateTimeToStr(const DateTime: TDateTime): string;

function DateTimeToStr(const DateTime: TDateTime; const FormatSettings: TFormatSettings): string;

更新:为避免您的应用对区域设置更改做出反应,您可以将Application.UpdateFormatSettings更改为False。 它默认为True中的TApplication.Create 但请注意,对于所有设置,这不是100%防弹,因为一些例程直接获取ThreadLocale。

答案 1 :(得分:8)

我同意弗朗索瓦,但我想提一下另一个选择:设置

Application.UpdateFormatSettings := False;

防止在Windows中全局更改格式设置时自动更新格式设置。