gpt4 book ai didi

delphi - 覆盖系统日期格式

转载 作者:行者123 更新时间:2023-12-03 15:25:19 26 4
gpt4 key购买 nike

在我的应用程序中,我正在从一个数据库读取数据并写入第二个数据库。该应用程序又快又脏,所以我正在使用 AsString 读/写。在 FieldByName 上和ParamByName查询的数量。

除了数据类型为Date之外,这适用于我的所有用例。或DateTime

据我所知FieldByName.AsString使用系统ShortDateTime返回日期的格式为(在我的例子中)dd/mm/yyyy。数据库期望日期写入为 yyyy-mm-dd

根据Delphi Basics我应该能够设置 ShortDateFormat到我需要的,但似乎在 XE5 中不再是这种情况(正确?)

进一步挖掘此处返回 these two使用 TFormatSettings 的问题覆盖本地设置。但是,这两者都使用 StrToDate 中生成的 FormatSettings。和FormatDateTime直接。

所以两个问题

1) 我可以告诉我的应用程序覆盖系统 ShortDateFormat

2)如果是这样,如何(如果没有,我有一个 B 计划)?

最佳答案

对日期和时间格式使用全局变量是最初的 RTL 设计者很久以前犯下的错误。依赖全局格式设置的函数(例如单个参数 StrToDate)将被保留以实现向后兼容性,但您不应使用它们。

对于日期/时间和字符串之间的转换,您应该:

  1. 使用您的日期格式初始化 TFormatSettings 实例。
  2. 调用两个参数 StrToDate,传递 TFormatSettings 以从字符串转换为日期。
  3. 调用 FormatDateTime 重载,该重载在反向转换时接受 TFormatSettings

现在,谈谈你问题的主要内容。在您描述的场景中,您根本不应该使用字符串作为日期和时间。使用 AsDateTime 而不是 AsString。如果您碰巧有一个数据库列将日期/时间存储为字符串,那么您应该使用基于 TFormatSettings 的转换函数来解决该设计错误。

如果您绝对决心使用字符串来完成这一切,并且我无法说服您,那么您需要使用 FormatSettings.ShortDateFormatSysUtils 控制短日期格式。

关于delphi - 覆盖系统日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com