Формат системної дати

Post by Andrey Dynnik
І ось, що я тобі скажу, _Sergej_?

AD >>> Як змінити формат системної дати? Щоб програма при старті
AD >>> встановлювала потрібний мені формат, а при завершенні роботи
AD >>> повертала назад старий.
SK >> в * .dpr
SK >> Application.Initialize;
SK >> Application.UpdateFormatSettings: = false;

SK >> SysUtils.ShortDateFormat: =.
SK >> SysUtils.LongDateFormat
SK >> SysUtils.ShortMonthNames
SK >> SysUtils.LongMonthNames
SK >> SysUtils.ShortDayNames
SK >> SysUtils.LongDayNames

Post by Andrey Dynnik
У сітці DBGreed відображається все красиво, але в базу все одно пише в форматі
"Dd.mm.yyyy", як писати в таблицю в форматі "yyyy \ mm \ dd"?
таблиця DBF, движок BDE. D6

Ти базу дивишся через що? Тобто через якийсь додаток? Через своє?
У базі дата зберігається у вигляді числа і базі всерівно який у тебе
формат. А ось користувачеві виводиться в тому форматі, який у нього
встановлений в системних настройках. Дивись регіональні настройки.
А функції типу
SysUtils.ShortDateFormat: =.
SysUtils.LongDateFormat

а також, наприклад, DECIMALSEPARATOR - роздільник цілої та дробової
частини і т.п.
змінюють формат ТІЛЬКИ для твого додатки, тобто якщо ти
хочеш, щоб в додатку ЗАВЖДИ і на БУДЬ-ЯКОМУ компі дата виводилася
тільки в такому форматі.
Зміни в панелі управління в регіональних настройках формат дати і
SQL Monitor теж буде показувати як тобі треба.

--
З повагою,
Igor E.Timofeev

04 Mar 05 18:25, you wrote to me:

SK >> SysUtils.ShortDateFormat: =.
SK >> SysUtils.LongDateFormat

AD> У сітці DBGreed відображається все красиво, але в базу все одно пише в
AD> форматі "dd.mm.yyyy", як писати в таблицю в форматі "yyyy \ mm \ dd"
AD>. таблиця DBF, движок BDE.
я думаю, що в базі дати зберігаються в бінарному вигляді і не мають уявлення про
тому, як вони будуть показані користувачеві.

SK> я думаю, що в базі дати зберігаються в бінарному вигляді і не мають
SK> уявлення про те, як вони будуть показані користувачеві.

AD >>> Як змінити формат системної дати? Щоб програма при
AD >>> старті встановлювала потрібний мені формат, а при завершенні роботи
AD >>> повертала назад старий.

AD> У сітці DBGreed відображається все красиво, але в базу все одно пише в
AD> форматі "dd.mm.yyyy", як писати в таблицю в форматі "yyyy \ mm \ dd"
AD>. таблиця DBF, движок BDE. D6

А ти що, в базу дату пишеш в текстовому вигляді? Hасколько я знаю фоpмат
хpанения поля типу дата не залежить про локалей. У DBF це пишеться у вигляді
yyyymmdd.
А часової зміна системних локалей на догоду твоїй конкpетной програмі - це
дуже поганий тон.

Best Wishes, Ilya

IP> А часової зміна системних локалей на догоду твоїй конкpетной програмі
IP> - це дуже поганий тон.


З особистої практики, коли нам намагалися продати кілька програм, то вони були відкинуті саме з цієї причини і потім виправлені вже не приймалися до подальшого ознайомлення.
Нам пригода на одне місце не потрібні.

AD >>> Як змінити формат системної дати? Щоб програма при старті
AD >>> встановлювала потрібний мені формат, а при завершенні роботи
AD >>> повертала назад старий.
SK >> в * .dpr
.
AD> У сітці DBGreed відображається все красиво, але в базу все одно пише в
AD> форматі "dd.mm.yyyy", як писати в таблицю в форматі "yyyy \ mm \ dd"?
AD> таблиця DBF, движок BDE. D6

Це не так, в таблиці все зберігається однаково, для dBase і його клонів, це System Data Format. Тому ні про які yyyy \ mm \ dd і мови бути не може.
Тепер з приводу відображення в клієнтській програмі, ти маєш право (відносне) робити так як тобі порадив SK, хоча треба задуматися, це неповага до користувача, але ось що стосується загальних параметрів системи, то це неприпустимо нікому крім самого користувача і має робитися інтректівнимі системними засобами.

Треба серйозно задуматися про користувачів, якщо користувач встановив формат dd.mm.yyyy, то значить йому так треба і ти не повинен лізти в це. Для цього достатньо правильно написати програму і працювати в рамках призначених для користувача налаштувань. Сообственно це дуже просто, якщо не лізти в систему, не намагатися що або змінювати в рантайм з форматами, то все робиться автоматично.

Єдине виправдання тимчасової зміни локальних регіональних налаштувань я бачу тільки коли робиться імпорт / експорт з зовнішніх файлів. А зміни глобальних регіональних налаштувань взагалі не бачу, вважаю це злочином, хакерською атакою.

Схожі статті