Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Формат времени на разных компьютерах (StrToDate)   Найти похожие ветки 

 
Layner ©   (2004-01-29 09:00) [0]

Подскажите, плз, если пишу StrToDate("10.02.2004"), в 2000 нормально считает, а вот если попадется комп с др. стандартом даты, что вернет эта ф-я? Другое что то, или этоже самое?


 
Anatoly Podgoretsky ©   (2004-01-29 09:12) [1]

А самому проверить религия не позволяет


 
SPIRIT ©   (2004-01-29 09:49) [2]

вот если ты на Селероне считал .. то нормально, а вот АМД уже не так будут


 
FoxBox   (2004-01-29 09:54) [3]

Ошибку вернет, если локальные настройки вида DD.MM.YY или же (американский вариант) MM.DD.YY (самый настоящий exception)
Но если на форме ты гоняешь сначала DateToStr(что-то), а потом обратно StrToDate() в какой-нить TEdit, то ничего страшного не произойдет. Мой совет. Используй компоненты для визуализации/редактирования даты, умеющие работать именно с TDateTime, тот же самый TDateTimePicker. И в обработках работай именно с TDateTime


 
SPIRIT ©   (2004-01-29 09:58) [4]

почем ошибку то сразу ... будет не 10 февраля, а 2 октября... ничё страшного


 
maxx0   (2004-01-29 10:13) [5]

DateSeparator: Char;
ShortDateFormat: string;
LongDateFormat: string;
из SysUtils смотреть не пробовал?


 
FoxBox   (2004-01-29 10:14) [6]


> SPIRIT ©

А ты попробуй преобразовать 04 год в 2004. Я посмотрю на тебя... Завалится сразу и основательно. Если стоят локальный установки, что количество знакомест в году 2, а ты передашь 4 знака, ессно машина тебя пошлет. Или же наоборот 4 знака на год машина захочет получить, а ты дашь 2. Можешь даже не пробовать (я уже напробовался).


 
FoxBox   (2004-01-29 10:17) [7]


> maxx0

Ну знаешь ты текущий формат на машине. А как ты узнаешь формат даты, переданной из-вне? Не подойдет... Но ход мыслей хороший...


 
BlackKing ©   (2004-01-29 10:18) [8]

to FoxBox (29.01.04 10:14) [6]

Jesli pochitat" eto : maxx0 (29.01.04 10:13) [5]
i pravil"no ispol"zovat", to pofig skoka znakomest v systeme ukazano.


 
BlackKing ©   (2004-01-29 10:20) [9]

to FoxBox

pri starte programmi ukazivajem:
ShortDateFormat:="dd.mm.yyyy";

i nam uzhe nevazhno chto v sisteme.


 
FoxBox   (2004-01-29 10:27) [10]


> BlackKing

Ну передали тебе дату в виде строки вида "03.20.04"... Давай, запускай StrToDate("03.20.04")
Знаешь, что у тебя будет? Ошибка "Неверный формат". Попробуй... Кстати, подобная дискуссия поднималась. И юзверя принудительно заставлять пользоваться форматом даты DD.MM.YYYY нехорошо. Как ты себя будешь чувствовать, если при каждом запуске виндов настройки (всякие цвета, шрифты) оболочки будут устанавливаться в стандартные вне зависимости от твоих пожеданий до сего момента?


 
BlackKing ©   (2004-01-29 10:37) [11]

1. ShortDateFormat:="dd.mm.yyyy";
устанавливает формат даты именно для программы, а не на всю систему.
2. во всей программе должен быть один формат даты, а не свой в каждой форме.
3. программа может иметь свой интерфейс, независимый от настроек системы, в крайнем случае можно добавить несколько опций где юзер сам введёт всякие форматы и цвета.


 
Плохиш   (2004-01-29 10:38) [12]

>FoxBox (29.01.04 10:27) [10]

Нормальный пользователь обычно вводит дату в формате, который он установил в системе. А не нормальному пользователю или в необычном случае ему можно и вежливо намекнуть о формате ввода.
А про TDateTimePicker ты же сам и сказал ;-)


 
Плохиш   (2004-01-29 10:39) [13]

>BlackKing © (29.01.04 10:37) [11]

> 3. программа может иметь свой интерфейс, независимый от
> настроек системы, в крайнем случае можно добавить несколько
> опций где юзер сам введёт всякие форматы и цвета.

Внешний вид качественной программы должен зависить от настроек системы.


 
BlackKing ©   (2004-01-29 10:42) [14]

Плохиш
выходит WinAmp - некачественная программа? Там всё не как в системе.


 
Плохиш   (2004-01-29 10:52) [15]


> BlackKing © (29.01.04 10:42) [14]
> Плохиш
> выходит WinAmp - некачественная программа? Там всё не как
> в системе.

В каком месте WinAmpa вводится дата? Это первое.
Второе. Для меня не качественная (в большей степени не из-за интерфейса), по-этому и не пользуюсь.
И вообще не надо пороть чушь, а то сейчас ещё и игры перебирать начнёшь.


 
BlackKing ©   (2004-01-29 11:16) [16]

Плохиш, а ето кто сказал?
"Внешний вид качественной программы должен зависить от настроек системы."

и ещё : много ли ты видел юзеров, которые сами могут настроить систему? многие даже не знают что такое бывает, а админам накласть на ето дело.

формат ввода даты не является внешним видом.


 
BlackKing ©   (2004-01-29 11:20) [17]

а во избежание ошибок вместо
StrToDate("10.02.2004")
лучше писать
Encodedate(y,m,d);
а вот как получить y,m,d - ето уже другой вопрос.


 
ЮЮ ©   (2004-01-29 11:24) [18]

>формат ввода даты не является внешним видом.

Неужели внешнее представление тоже меняется ??? :-)


 
ЮЮ ©   (2004-01-29 11:25) [19]

Sorry!
>формат ввода даты не является внешним видом.
Неужели внутренне представление тоже меняется ??? :-)


 
Плохиш   (2004-01-29 11:28) [20]


BlackKing © (29.01.04 11:16) [16]
Плохиш, а ето кто сказал?
"Внешний вид качественной программы должен зависить от настроек системы."

Мы выдираем фразы из контекста или беседуем в рамках поставленного вопроса?


 
BlackKing ©   (2004-01-29 11:31) [21]

чтобы не отступать от настроек системы и избежать ошибок надо использовать Encodedate, или писать обработчик.
выбор за написателем.


 
BlackKing ©   (2004-01-29 11:33) [22]

Мы делаем и то и другое :o)

Sorry, такой уж я никароший!


 
FoxBox   (2004-01-29 12:21) [23]


> BlackKing

Формат представления даты во внешних система (в частности на другом компьютере) может быть ДРУГИМ!!!!! Ты по определению получишь строку с датой (если дата передана в виде строки) в формате, отличном от внутреннего представления своей машины!!!! И ХРЕН ТЫ ЕЕ (дату) ПЕРЕВЕДЕШЬ В TDateTime ИСПОЛЬЗУЯ StrToDate. Тебе понятно о чем я? Или ты опять будешь уси##ться и грить, что установка на твоей машине формата dd.mm.yy спасет отца русской демократии?
Прошу прощения за использование ненормативной лексики...
Так. пошел флейм...


 
FoxBox   (2004-01-29 12:25) [24]

Уточню на всякий случай... 2 проги, работающие на разных компах, обмениваются данными друг с другом... Все, кирдык обмену, если одна знает что такое mm.dd.yy, а другая знает dd.mm.yyyy Вот такая ситуация допустима


 
BlackKing ©   (2004-01-29 12:26) [25]

FoxBox, dlja nachala ne meshalo-bi povnimatel"nej prochitat" o chom ja govoril. Naskoka ja ponjal - mi govorim o raznih veshah.


 
BlackKing ©   (2004-01-29 12:27) [26]

FoxBox, proga odna i ta zhe ili raznije?


 
Sandman25 ©   (2004-01-29 12:48) [27]

[16] BlackKing © (29.01.04 11:16)

Программа не должна запрещать мне ставить зеленый цвет фона окон Windows. Не говоря уже о собственно настройках даты.


 
BlackKing ©   (2004-01-29 13:11) [28]

to Sandman25 © (29.01.04 12:48) [27]
eto odin iz variantov obhoda problemi, i on vpolne rabochij.


 
Карелин Артем ©   (2004-01-29 13:21) [29]

Хммм. А я при передаче данных между компами загоняю дату в целое число, потом из этого делаю строку и передаю.


 
Goida ©   (2004-01-29 13:24) [30]

Думаю, самый надежный способ перевести нужную дату в формат даты, при этом не зная настроек компа следующий:
var
MyTime: TDateTime;
SysTime: TSystemTime;
begin
with SysTime do
begin
wYear := 2003;
wMonth := 12;
wDay := 31;
wHour := 23;
wMinute := 59;
wSecond := 0
end;
MyTime := SystemTimeToDateTime(SysTime);
end.


 
SPIRIT ©   (2004-01-29 13:31) [31]

Предлагаю написать письмо хозяину даты dd.mm.yyyy и хозяину dd.mm.yy с предложением образования нового ЕДИНОГО формата dd.mm.yyy и установить хозяином нового формата FoxBox. И за каждую посланную строку платить ему 1 коп. за возмещение морального ущерба причененного ему в результате несовместимости yy и yyyy. кто за ?


 
FoxBox   (2004-01-29 13:32) [32]


> Goida

Речь идет о тексте вида "20.03.2004"


 
Goida ©   (2004-01-29 14:07) [33]


> FoxBox

Ну и пусть идет. Ведь хотят этот текст перевести в формат даты:
> Layner © [0]
> Подскажите, плз, если пишу StrToDate("10.02.2004"),


 
Anatoly Podgoretsky ©   (2004-01-29 14:16) [34]

Именно о "10.02.2004", а не о "20.03.2004" где еще можно догадаться, а зудший случай "01.02.03"


 
Anatoly Podgoretsky ©   (2004-01-29 14:17) [35]

Вывод или надо обменитваться данными в одинаковом текстовом формате (все место для ошибок) или обмениваться в двоичном, например TDateTime тогда проблемы не будет


 
FoxBox   (2004-01-29 14:19) [36]


> SPIRIT

С удовольствием встану на денежное довольствие!
Ну а если серьезно, не засоряй форум флеймом (ведь ты ничего умного не сказал во всем обсуждении). Ладно, каждый выбирает решение проблем по-своему.


 
SPIRIT ©   (2004-01-29 14:36) [37]

а чё если на приемнике yy а ты передаешь "10.02.2004"

так ты убери из строчки 2 символа а именно 2 и 0
и будет у тебя "10.02.04" а если yyyy тогда все путем ведь так ???
Изучал оператор IF ?


 
Layner ©   (2004-01-29 16:32) [38]

Программа однопользовательская... По сети обмениваться ни с кем не буду,
понравилось это
BlackKing © (29.01.04 10:37)
ShortDateFormat:="dd.mm.yyyy";
Поставлю на OnCreate формы, если я правильно понял, и все должно быть Ok, хоть американская, хоть другая система даты..


 
FOX ©   (2004-01-29 19:05) [39]

To SPIRIT © (29.01.04 14:36) [37]

Фрагмент лога Apache:
...- [29/Jan/2004:18:44:03 +0300]...
InterBase:
... 17-JAN-1990 ...

И как ты все эти варианты будешь учитывать?



Страницы: 1 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.019 c
3-29280
Евген
2004-01-09 12:16
2004.02.10
Проблема с IBDataSet


8-29479
VoLung
2003-10-06 23:55
2004.02.10
Как сделать слайдшоу?


6-29511
Alek_1
2003-12-04 15:12
2004.02.10
Служба сообщений виндовс


3-29255
Burafchick
2004-01-18 22:51
2004.02.10
Как установить QReport в Delphi 7


3-29264
Sir Alex
2004-01-14 07:51
2004.02.10
UNICODE_FSS и FireBird и русские буквы