Delphi - 独立于区域设置的应用程序
我需要创建一个独立于区域设置的应用程序(D2006),最重要的是所有的dateformats必须相同。Delphi - 独立于区域设置的应用程序
对于乞讨,我想用FormatDateTime('aConstantDefined')替换所有的FormatDateTime('adateformate')。也 Application.UpdateFormatSettings和Application.UpdateMetricSettings应设置为False。
还有什么我应该照顾?
LE:问题是我有2个不同的区域设置的用户,他们不想统一他们的设置。我知道这听起来很奇怪,但这是事实。所以,这就是为什么我需要使我的应用程序完全独立于区域设置的原因。
应用您自己的TFormatSettings
记录。适当时拨打电话FormatDateTime('aConstantDefined',ADateTime,myFormatSettings)
。
这样可以避免您的应用程序更改系统格式设置时发生意外。 因此,您不必使用Application.UpdateFormatSettings
和Application.UpdateMetricSettings
。
更新:
我要补充一点,参与区域设置的所有格式的字符串函数,采取TFormatSettings
超载参数。它通常用于使应用程序线程安全,但在覆盖区域设置时会派上用场。在为了通信/存储目的而序列化/反序列化数据时,我经常使用这种技术。
只要你在内部操作你的日期为'TDate'或'TDateTime'而不是字符串,你应该很安全。真正的问题是当你有不同的时区时! (哦,钱也是一件麻烦事。) – 2012-01-09 13:17:38
@LeonardoHerrera,钱总是麻烦:)。是的,保持数据的最佳格式,并且只在I/O期间进行必要的转换。 – 2012-01-09 13:24:32
@LeonardoHerrera:您可以先通过本地机器的时区偏移调整输入,然后将UTC日期/时间值存储在“TDateTime”中。对于大多数操作,您通常可以使用'TDateTime',就好像机器运行在UTC 0一样。只要确保在比较本地时间戳值时将本地时区考虑在内,转换回字符串等。 – 2012-01-09 22:07:12
就是这样,但为什么你想忽略区域设置?它对你的用户不太友善? – 2012-01-09 10:12:26
“独立于区域设置”,你的意思是说你想忽略本地系统日期/时间/小数点分隔符? – PresleyDias 2012-01-09 10:36:50
@all - 读我的LE。谢谢。 – RBA 2012-01-09 10:39:41