在我的应用程序中,我正在从一个数据库读取并写入第二个数据库.该应用程序快速而肮脏,所以我正在使用和查询AsString两者进行读/写.FieldByNameParamByName
这适用于我的所有用例,除了数据类型是Date或DateTime
据我所知,FieldByName.AsString使用系统ShortDateTime格式返回日期(在我的情况下)dd/mm/yyyy.数据库期望将日期写为yyyy-mm-dd
根据Delphi Basics,我应该能够设置ShortDateFormat我需要的东西,但似乎在XE5中不再是这种情况(对吗?)
此外挖这里返回这 2个使用问题TFormatSettings覆盖本地设置.然而,这两种使用产生FormatSettings在StrToDate和FormatDateTime直接.
所以有两个问题
1)我可以告诉我的应用程序覆盖系统ShortDateFormat吗?
2)如果是,如何(如果没有,我有B计划)?
对于日期和时间格式使用全局变量是很久以前由原始RTL设计者犯下的错误.依赖于全局格式设置的函数(如单个参数)StrToDate会保留以便向后兼容,但您不应使用它们.
对于日期/时间和字符串之间的转换,您应该:
TFormatSettings使用您的日期格式初始化实例.StrToDate,将您TFormatSettings的字符串转换为日期.FormatDateTime过载,TFormatSettings在另一个方向转换时接受.现在,问题的主旨.在您描述的场景中,您不应该根据日期和时间使用字符串.使用AsDateTime而不是AsString.如果您碰巧有一个数据库列将日期/时间存储为字符串,那么您应该使用TFormatSettings基于转换的函数来解决该设计错误.
如果你完全没有使用字符串完成这一切,并且我无法说服你,那么你需要使用FormatSettings.ShortDateFormatfrom SysUtils来控制你的短日期格式.
| 归档时间: |
|
| 查看次数: |
5956 次 |
| 最近记录: |