Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd / 25 сообщений из 63, страница 1 из 3
27.03.2018, 17:51
    #39621474
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Не мог найти подобной функции , нужная же весчьщ
написал сам, может кому пригодиться
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Function StrToDateTimeFmt(dt, Frm, t, frmt :String): TDateTime;
Var
 yy, mm, dd : string;
 hh, mi, ss , ms: string;
 i: integer;
begin
  frm := uppercase(frm);
  frmt := uppercase(frmt);
  for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];
    if frm[i]='M' then mm:=mm+dt[i];
    if frm[i]='D' then dd:=dd+dt[i];
  end;
  for i:=1 to length(frmt) do
  begin
    if frmt[i]='H' then hh:=hh+t[i];
    if frmt[i]='M' then mi:=mi+t[i];
    if frmt[i]='S' then ss:=ss+t[i];
  end;
  if ss='' then ss:='00';
  if mi='' then mi:='00';
  result :=  EncodeDateTime(strtoint(yy), strtoint(mm), strtoint(dd),
  strtoint(hh), strtoint(mi), strtoint(ss), 0 );
end;


------
www.orasource.ru
...
Рейтинг: 0 / 0
27.03.2018, 17:53
    #39621478
jmp_original
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Мдя... тяжёлый случай.
...
Рейтинг: 0 / 0
27.03.2018, 17:55
    #39621482
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_K,

А если в параметрах формата я AABBCC передам?
...
Рейтинг: 0 / 0
27.03.2018, 17:55
    #39621484
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
...
Рейтинг: 0 / 0
27.03.2018, 17:57
    #39621486
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_K,

Или вместо цифирок какую-нить рандомную строку символов? По меньшей мере стоит генерировать Exception с вразумительным сообщением - "неправильный формат" и т.п.
...
Рейтинг: 0 / 0
27.03.2018, 18:24
    #39621510
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
DarkMasterMyp3_u_K,

Или вместо цифирок какую-нить рандомную строку символов? По меньшей мере стоит генерировать Exception с вразумительным сообщением - "неправильный формат" и т.п.
вот и генерите ,
try except написать несложно
...
Рейтинг: 0 / 0
27.03.2018, 18:25
    #39621511
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
wadman http://www.sql.ru/forum/1036550/konvertirovanie-stroki-formata-yyymmdd-v-datu?hl=yyyymmdd
там нет решения , зачем вы эту тему приводите , я ее видел
...
Рейтинг: 0 / 0
27.03.2018, 18:27
    #39621512
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
DarkMasterMyp3_u_K,

А если в параметрах формата я AABBCC передам?
в моем случае форматы заданы и есть из перечень , физически нельзя передать неправильный формат
если нужна обработка исключений добавьте
...
Рейтинг: 0 / 0
27.03.2018, 19:03
    #39621533
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_K,

как минимум есть одна ошибка - не инициализируете локальные переменные.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
Var
 yy, mm, dd : string;
begin
...
  for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];
    if frm[i]='M' then mm:=mm+dt[i];
    if frm[i]='D' then dd:=dd+dt[i];


в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
...
Рейтинг: 0 / 0
27.03.2018, 19:46
    #39621554
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
s62Myp3_u_K,

в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.

Really?
...
Рейтинг: 0 / 0
28.03.2018, 08:44
    #39621699
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_Kwadman http://www.sql.ru/forum/1036550/konvertirovanie-stroki-formata-yyymmdd-v-datu?hl=yyyymmdd
там нет решения , зачем вы эту тему приводите , я ее видел
Там их несколько. По уровню примерно такие же.
...
Рейтинг: 0 / 0
28.03.2018, 10:28
    #39621775
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
DarkMasterMyp3_u_K,

А если в параметрах формата я AABBCC передам?
ну это будет характеризовать вас определенным образом ...
...
Рейтинг: 0 / 0
28.03.2018, 10:30
    #39621778
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
wadmanMyp3_u_Kпропущено...

там нет решения , зачем вы эту тему приводите , я ее видел
Там их несколько. По уровню примерно такие же.
они все не подходят, догадайтесь почему ... но я не пробовал из jvcl может там и норм
...
Рейтинг: 0 / 0
28.03.2018, 10:31
    #39621780
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
s62Myp3_u_K,

как минимум есть одна ошибка - не инициализируете локальные переменные.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
Var
 yy, mm, dd : string;
begin
...
  for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];
    if frm[i]='M' then mm:=mm+dt[i];
    if frm[i]='D' then dd:=dd+dt[i];


в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
вы из Амстердама что ли пишете?
...
Рейтинг: 0 / 0
28.03.2018, 10:31
    #39621782
Василий №2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
s62в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
Ложное срабатывание, строки - управляемые типы, т.ч. их обнулением занимается компилятор
...
Рейтинг: 0 / 0
28.03.2018, 10:36
    #39621788
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Василий №2s62в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
Ложное срабатывание, строки - управляемые типы, т.ч. их обнулением занимается компилятор

Я предпочитаю, чтобы код был простым и читаемым и переменные перед подобного рода использованием были явно инициализированы.
...
Рейтинг: 0 / 0
28.03.2018, 10:49
    #39621797
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
asviridenkovs62Myp3_u_K,

в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.

Really?Нет, ошибся. Строка будет пустая.
...
Рейтинг: 0 / 0
28.03.2018, 10:55
    #39621802
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_K,

Перед этим:
Код: pascal
1.
2.
3.
for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];


Нужно это:
Код: pascal
1.
2.
3.
if Length(frm)<>Length(dt) then
   raise Exception.Create(....);
   // ну или не raise ;)


Рассказать почему?
...
Рейтинг: 0 / 0
28.03.2018, 11:10
    #39621828
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
DarkMasterMyp3_u_K,

Перед этим:
Код: pascal
1.
2.
3.
for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];


Нужно это:
Код: pascal
1.
2.
3.
if Length(frm)<>Length(dt) then
   raise Exception.Create(....);
   // ну или не raise ;)


Рассказать почему?
у меня такая ситуация невозможна , форматы и даты регламентированы
если вам надо добавьте Exception...
...
Рейтинг: 0 / 0
28.03.2018, 11:15
    #39621839
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
DarkMasterMyp3_u_K,

Перед этим:
Код: pascal
1.
2.
3.
for i:=1 to length(frm) do
  begin
    if frm[i]='Y' then yy:=yy+dt[i];


Нужно это:
Код: pascal
1.
2.
3.
if Length(frm)<>Length(dt) then
   raise Exception.Create(....);
   // ну или не raise ;)


Рассказать почему?

Рассказать, почему за raise нетипизированный Exception надо руки отрывать ?
Вот гансмокер рассказывает:
http://delphikingdom.ru/asp/viewitem.asp?catalogid=1392
...
Рейтинг: 0 / 0
28.03.2018, 11:19
    #39621848
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
не ругайтесь девочки, выложил функцию как базис , несложно доработать под себя , добавить обработку исключений, проверку форматов, все, что ван необходимо для работы...
...
Рейтинг: 0 / 0
28.03.2018, 11:23
    #39621856
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_Kне ругайтесь девочки, выложил функцию как базис , несложно доработать под себя , добавить обработку исключений, проверку форматов, все, что ван необходимо для работы...

Я бы посоветовал вам использовать этот базис как ректальный суппозиторий. Удачи.
...
Рейтинг: 0 / 0
28.03.2018, 11:38
    #39621876
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
schiMyp3_u_Kне ругайтесь девочки, выложил функцию как базис , несложно доработать под себя , добавить обработку исключений, проверку форматов, все, что ван необходимо для работы...

Я бы посоветовал вам использовать этот базис как ректальный суппозиторий. Удачи.
не помню, что спрашивал совета у тупой телки...
...
Рейтинг: 0 / 0
28.03.2018, 11:42
    #39621881
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
Myp3_u_K,

автору меня такая ситуация невозможна , форматы и даты регламентированы

Сегодня невозможна. А завтра или лет через 5 как найдешь.
...
Рейтинг: 0 / 0
28.03.2018, 11:45
    #39621885
Myp3_u_K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
makhaonMyp3_u_K,

автору меня такая ситуация невозможна , форматы и даты регламентированы
Сегодня невозможна. А завтра или лет через 5 как найдешь.
нет , фиксированные форматы, по другому вся система не сможет работать...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd / 25 сообщений из 63, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]