我正在开发一个需要以下区域设置的应用程序(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 dateseparator不同 为什么会这样?
为什么区域设置未应用于label1.caption
(如图所示)?
答案 0 :(得分:1)
DateToStr
使用ShortDateFormat
作为输出格式。你最初没有从MM/dd/yy
设置改变它;你只改变了DateSeparator
。
我很困惑,关于你为什么要使用(Fields(1).Text)
(是吗?对于字段下标而言是圆括号而不是[])。
如果数据库配置为使用|
作为日期分隔符,因为它显示在屏幕图像中,为什么使用DateToStr
? .Text
似乎以您希望获取的格式获取信息。
答案 1 :(得分: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;
这给了我想要的格式的正确结果