加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 覆盖系统日期格式

发布时间:2020-12-15 09:26:04 所属栏目:大数据 来源:网络整理
导读:在我的应用程序中,我正在从一个数据库读取并写入第二个数据库.应用程序快速而且脏,所以我在查询的FieldByName和ParamByName上使用AsString进行读/写. 除了数据类型为Date或DateTime之外,这适用于我的所有用例 据我所知,FieldByName.AsString使用系统ShortDat
在我的应用程序中,我正在从一个数据库读取并写入第二个数据库.应用程序快速而且脏,所以我在查询的FieldByName和ParamByName上使用AsString进行读/写.

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

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

根据Delphi Basics我应该能够将ShortDateFormat设置为我需要的东西,但似乎在XE5中不再是这种情况(对吗?)

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

所以有两个问题

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

2)如果是,如何(如果没有,我有B计划)?

解决方法

对于日期和时间格式使用全局变量是很久以前由原始RTL设计者犯下的错误.依赖于全局格式设置的函数(如单个参数StrToDate)是为了向后兼容而保留的,但您不应该使用它们.

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

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

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

如果你完全没有使用字符串来完成这一切,并且我无法说服你,那么你需要使用SysUtils中的FormatSettings.ShortDateFormat来控制你的短日期格式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读