![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод даты в строгу с заданым форматом
Opilki_Inside © (2006-01-30 16:30:00)Всем привет!
В делфях есть функция DateFormat, которая переводит дату в строку с заданым форматом...
А есть ли обратная функция, что бы в качестве аргументов я бы передавал строку, и формат в котором она находится?
Т.е. у меня есть строка
051022 и формат yymmdd нужно на выходе получить тип TData со значением 22 октября 2005
с FormatSettings такого не получилось, а гемороя не хочется:(
Opilki_Inside (2006-01-30 18:27:00) [1]Yanis, не верно.
Я сначала написал про функцию DateFormat , и в нее передается именно формат! (format), а не установки (format settings). А в StrToDate передаются именно format settings. И искал я функцию обратную, DateFormat.
Да я же тебе объяснил что написать парсер - не проблема, думал что существует стандартная функция. Ну раз ее не существует то так и нужно было сказать, а не тыкать носом в функцию с которой это и так не получится.
Opilki_Inside (2006-01-30 18:27:00) [2]Yanis, не верно.
Я сначала написал про функцию DateFormat , и в нее передается именно формат! (format), а не установки (format settings). А в StrToDate передаются именно format settings. И искал я функцию обратную, DateFormat.
Да я же тебе объяснил что написать парсер - не проблема, думал что существует стандартная функция. Ну раз ее не существует то так и нужно было сказать, а не тыкать носом в функцию с которой это и так не получится.
begin...end (2006-01-30 18:20:00) [3]> Opilki_Inside
Я могу ещё раз сказать, что в строку нужно вставить DateSeparator.
var
FS: TFormatSettings;
DT: TDateTime;
S: string;
begin
GetLocaleFormatsettings(LOCALE_USER_DEFAULT, FS);
FS.ShortDateFormat := 'yymmdd';
FS.TwoDigitYearCenturyWindow := 50;
S := '05.10.22';
DT := StrToDateTime(S, FS)
end
Yanis (2006-01-30 18:13:00) [4]2 [6]
Ты писал
> А есть ли обратная функция, что бы в качестве аргументов
> я бы передавал строку, и формат в котором она находится?
Я ответил:
> Есть такая функция. StrToDate называется.
Разве не верно?
Да тут даже переводить не нужно. Если формат фиксированный, то третьему и четёртому символу (т.е. числу, в твоём случае 10) ставить в соответсвие название месяца. Это проще чем вставлять разделители и использовать стандартныефункции.
Opilki_Inside (2006-01-30 18:05:00) [5]Yanis
>А ты ещё разок попробуй.
Yanis, я же сказал что через FormatSettings не получилось. неужели не ясно? В строке с датой какой-то сепаратор должен быть по любому.
А если у тебя получилось - то напиши, если конечно, тебе не жалко...
Yanis, ты вопрос вообще читал? Про StrToDate и так все знают
Дело не втом что мне служно написать функцию распарсивания этой даты, я уже давно ее написал. Дело в подходе, можно все функции заново написать... только стандартные функции работают как-то по надежнее и не нужно с собой самодельных таскать
Yanis (2006-01-30 17:19:00) [6]
> что бы в качестве аргументов я бы передавал строку, и формат
> в котором она находится?
Есть такая функция. StrToDate называется.
> с FormatSettings такого не получилось
А ты ещё разок попробуй.
> а гемороя не хочется:(
Тогда иди пивка попей.
Ega23 (2006-01-30 17:17:00) [7]
> нее... ну не совсем... есть текстовый файл, в нем дата в
> формате yymmdd нужно ее от туда изъять и перевести в ISO,
> для дальнейшей загрузки в БД
>
Ну, если формат даты в файле фиксированный, то, думаю, тебе не составит труда его распарсить так, как надо.
begin...end (2006-01-30 17:15:00) [8]По крайней мере, DateSeparator в строку придётся вставить.
Opilki_Inside (2006-01-30 17:13:00) [9]нее... ну не совсем... есть текстовый файл, в нем дата в формате yymmdd нужно ее от туда изъять и перевести в ISO, для дальнейшей загрузки в БД
Ega23 (2006-01-30 17:05:00) [10]Тебе, поди, для БД надо?