0

我正在开发一个需要以下区域设置(Delphi 7 和 PostgreSQL 9.0)的应用程序:

   1. DateSeparator:='/';
   2. TimeSeparator:=':';
   3. ThousandSeparator:=',';
   4. DecimalSeparator:='.';
   5. ShortDateFormat:='MM/dd/yy';
   6. ShortTimeFormat:='hh:mm:ss';

我只需要为我的应用程序而不是系统范围更改区域设置。

在表单的 OnCreate 中,我设置了上述分隔符,我当前的系统分隔符是:

   1. DateSeparator='|';
   2. TimeSeparator='|';
   3. ThousandSeparator='|';
   4. DecimalSeparator='|';

(这是为了测试目的。)

现在在 Postgres 中,我有一个表格,我可以从中获取要在应用程序中显示的日期,但不知何故,日期分隔符似乎不起作用(如 label1 所示)!

在此处输入图像描述

检查图像。

在此处输入图像描述

我发出查询以从表中获取日期

                    Label1.Caption:=(Fields(1).Text);
                    Label2.Caption:=datetostr(Fields(1).Data) ;

查询是

 select min(dat), max(dat) from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

现在是相同的日期,如果我将 .data 与 .text 日期分隔符的日期分隔符不同,为什么会发生这种情况?

为什么没有应用区域设置label1.caption(如图所示)?

4

2 回答 2

1

DateToStr用作ShortDateFormat输出格式。你一开始并没有改变它MM/dd/yy。你只改变了DateSeparator.

不过,我很困惑,为什么要使用(Fields(1).Text)(对吗?字段下标的括号而不是 []?)。

如果数据库被配置为|用作日期分隔符,因为它来自您的屏幕图像,您为什么要使用DateToStr?似乎.Text正在以您希望获得的格式获取信息。

于 2011-12-08T13:46:43.257 回答
1

好的,我在一个站点上找到了在 此处输入链接描述 以获得适当的格式,我所要做的就是将查询作为

select to_char(min(dat),'mm/dd/yy'), to_char(min(dat),'mm/dd/yy') from diary where survey in (2008401) and event not in ('E','C','R') and region=6100;

这给了我想要的格式的正确结果

于 2011-12-09T07:27:26.600 回答