Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

Формат времени на разных компьютерах (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.008 c
3-29205
Pako
2004-01-20 08:40
2004.02.10
Select


1-29361
BlackKing
2004-01-29 10:31
2004.02.10
Components - Property из ComboBoxa.


1-29392
Андрей Л.
2004-02-01 16:06
2004.02.10
ShellListView


6-29494
Lexer
2003-12-08 16:41
2004.02.10
Закачка файлов через SOCK-протокол


3-29263
DragonVas
2004-01-18 11:49
2004.02.10
Очистка БД от индексов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский