Путаница в региональных настройках формата даты из PostgreSQL
Я работаю над приложением, которое требует следующих региональных настроек (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
(как показано на рисунке)?
2 ответа
Хорошо, я нашел на одном сайте, введите ссылку здесь, чтобы получить соответствующий формат, все, что мне нужно было сделать, это получить запрос как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;
Это дало мне правильный результат в формате, который я хотел
DateToStr
использования ShortDateFormat
в качестве выходного формата. Вы не изменили это от MM/dd/yy
установить изначально; вы только изменили DateSeparator
,
Я смущен тем, почему вы хотите использовать (Fields(1).Text)
(это верно? Скобки вместо [] для индекса Fields?).
Если БД настроена на использование |
в качестве разделителя даты, как это видно из вашего изображения на экране, почему вы используете DateToStr
? Похоже, что .Text
получает информацию в формате, который вы хотите получить.