powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
63 сообщений из 63, показаны все 3 страниц
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621474
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не мог найти подобной функции , нужная же весчьщ
написал сам, может кому пригодиться
Код: 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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621478
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мдя... тяжёлый случай.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621482
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_K,

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

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

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

А если в параметрах формата я AABBCC передам?
в моем случае форматы заданы и есть из перечень , физически нельзя передать неправильный формат
если нужна обработка исключений добавьте
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621533
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621554
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62Myp3_u_K,

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

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

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

там нет решения , зачем вы эту тему приводите , я ее видел
Там их несколько. По уровню примерно такие же.
они все не подходят, догадайтесь почему ... но я не пробовал из jvcl может там и норм
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621780
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621782
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
Ложное срабатывание, строки - управляемые типы, т.ч. их обнулением занимается компилятор
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621788
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2s62в переменных yy, mm, dd изначально может быть что угодно, вовсе не обязательно пустые строки.
Ложное срабатывание, строки - управляемые типы, т.ч. их обнулением занимается компилятор

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

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

Really?Нет, ошибся. Строка будет пустая.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621802
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621828
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621839
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621848
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не ругайтесь девочки, выложил функцию как базис , несложно доработать под себя , добавить обработку исключений, проверку форматов, все, что ван необходимо для работы...
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621856
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_Kне ругайтесь девочки, выложил функцию как базис , несложно доработать под себя , добавить обработку исключений, проверку форматов, все, что ван необходимо для работы...

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

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

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

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

автору меня такая ситуация невозможна , форматы и даты регламентированы
Сегодня невозможна. А завтра или лет через 5 как найдешь.
нет , фиксированные форматы, по другому вся система не сможет работать...
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621886
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без СМС и регистрации
Код: pascal
1.
MyDate := JvDateUtil.StrToDateFmt('DDMMYYY', '28032016')
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621896
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд, видел решение, спасибо
JvDateUtil это отдельная библиотека, я так понимаю , ее нет в стандартной поставке d7...
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621898
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

Гм... Вопрос не в том, нужен ли там Exception (типизированный или нет) - я указал на то, что вообще нет проверки входных параметров и их длин, и при малейшем прыжке в сторону мы можем получить целый пучек Exception (по меньшей мере - выход за границы массива и ошибку преобразования строки в число).
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621901
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_KКвейд, видел решение, спасибо
JvDateUtil это отдельная библиотека, я так понимаю , ее нет в стандартной поставке d7...

JCL - Jedi Code Library - must have в общем.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621910
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдбез СМС и регистрации
Код: pascal
1.
MyDate := JvDateUtil.StrToDateFmt('DDMMYYY', '28032016')


там времени нет , только дата
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39621940
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иногда бывает скучно
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
program strdate;

{$APPTYPE CONSOLE}

uses
  SysUtils, DateUtils;

resourcestring
  sSDTFNoFmtString  = 'Не задана строка форматирования даты/времени.';
  sSDTFLengthError  = 'Длина исходной строки меньше заданной форматированием.';
  sSDTFCharMismatch = 'Символ %d строки не соответствует формату.';
  sSDTFNonDigitChar = 'Некорректное числовое значение в позиции %d.';

{ Допустимые символы в Fmt:
    Y - год, M - месяц, D - день;
    h - час, m - минута, s - секунда, z - миллисекунда;
    ? - один любой символ, * - всё, кроме цифр.
    Все остальные символы означают сами себя. }
function StrToDateTimeFmt(const Str, Fmt: string): TDateTime;
var
  P: PChar;   // текущий символ формата
  L: PChar;   // начало текущего блока
  E: Integer; // позиция ощибки преобразования строки в число
  I: Integer; // индекс текущего поля даты и времени
  S: Integer; // смещение текущего поля в исходной строке относительно формата
  D: array [0..6] of Integer; // значения полей даты и времени
begin
  if Fmt = '' then
    raise EConvertError.CreateRes(@sSDTFNoFmtString);
  if Length(Str) < Length(Fmt) then
    raise EConvertError.CreateRes(@sSDTFLengthError);
  I := 0; // не требуется, но компилятор тупит и ругается на not initialized.
  S := 1; // начинается с 1 для компенсации индексации строк
  P := PChar(Pointer(Fmt));
  L := P;
  FillChar(D, SizeOf(D), $00);
  repeat
    if P^ <> L^ then begin
      case L^ of
        'Y': I := 0;
        'M': I := 1;
        'D': I := 2;
        'h': I := 3;
        'm': I := 4;
        's': I := 5;
        'z': I := 6;
        '*': begin
               I := P - PChar(Pointer(Fmt));
               while not (Str[I + S] in ['0'..'9']) do Inc(S);
               if Length(Str) - S + 1 < Length(Fmt) - (P - L) then
                 raise EConvertError.CreateRes(@sSDTFLengthError);
               L := P;
               Inc(P);
               Continue;
             end;
      else
        if (L^ <> '?') and (Str[L - PChar(Pointer(Fmt)) + S] <> L^) then
          raise EConvertError.CreateResFmt(@sSDTFCharMismatch, [L - PChar(Pointer(Fmt)) + S])
        else begin
          L := P;
          Inc(P);
          Continue;
        end;
      end;
      Val(Copy(Str, L - PChar(Pointer(Fmt)) + S, P - L), D[I], E);
      if E > 0 then
        raise EConvertError.CreateResFmt(@sSDTFNonDigitChar, [L - PChar(Pointer(Fmt)) + E + S - 1]);
      L := P;
    end;
    Inc(P);
  until (P - 1)^ = #0;
  Result := EncodeDateTime(D[0], D[1], D[2], D[3], D[4], D[5], D[6]);
end;

var
  d: TDateTime;
begin
  d := StrToDateTimeFmt('[20150312] <13:10:24.346>', '?YYYYMMDD*mm:hh:ss.zzz>');
  Writeln(FormatDateTime('DD.MM.YYYY hh:mm:ss (zzz)', d));
  ReadLn;
end.

...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622018
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я стесняюсь спросить, а чем не угодила стандартная функция StrToDateTime() в варианте с двумя параметрами?
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622023
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Я стесняюсь спросить, а чем не угодила стандартная функция StrToDateTime() в варианте с двумя параметрами?Тем, что автор может написать свою функцию, с апперкейсом и проверками
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622029
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Я стесняюсь спросить, а чем не угодила стандартная функция StrToDateTime() в варианте с двумя параметрами?
Приходит дата/время в формате "20150312131024" - как это в неё засунуть?
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622039
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp, думаю, что только распарсить самому
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622053
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11alekcvp, думаю, что только распарсить самому
Ну тут вот спрашивают, зачем парсить самому если есть стандартная StrToDateTime :)
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622063
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,
хорошее решение!
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622093
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StrToDateTime - не выйдет...

DateSeparator: Char - не задашь пустой
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622111
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем такие огороды городить, когда есть Format ?
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622114
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7iзачем такие огороды городить, когда есть Format ?А Format конвертирует сроку в дату?
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622119
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навскидку, без проверок
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
function TForm7.StrToDateFrmt(const iFormat, iDateStr: string): TDateTime;
var
  AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;
  aPos: Integer;

  procedure InitVars;
  begin
    AYear := 0;
    AMonth := 0;
    ADay := 0;
    AHour := 0;
    AMinute := 0;
    ASecond := 0;
    AMilliSecond := 0;
  end;

  function GetPart(const iPart: Char): Word;
  var
    aYCnt: Integer;
  begin
    Result := 0;
    aYCnt := 0;

    while (aPos <= High(iFormat)) and (iFormat.Chars[aPos + aYCnt] = iPart) do
      inc(aYCnt);

    Result := StrToInt(iDateStr.Substring(aPos, aYCnt));
    aPos := aPos + aYCnt;
  end;

var
  i: Integer;
begin
  InitVars;
  aPos := 0;

  while aPos <= High(iFormat) do
  begin
    case iFormat.Chars[aPos] of
      'Y':
        AYear := GetPart('Y');
      'M':
        AMonth := GetPart('M');
      'D':
        ADay := GetPart('D');
      'H':
        AHour := GetPart('H');
      'N':
        AMinute := GetPart('N');
      'S':
        ASecond := GetPart('S');
      'Z':
        AMilliSecond := GetPart('Z');
    else
      inc(aPos);
    end;
  end;

  Result := EncodeDateTime(AYear, AMonth, ADay, AHour, AMinute, ASecond,
    AMilliSecond);
end;
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622157
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_K,

Ок, упорство в ереси лечится жизнью. Ты делеко не первый :)
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622161
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonMyp3_u_K,

Ок, упорство в ереси лечится жизнью. Ты делеко не первый :)
try walking in my shoes
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622169
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_K,

Давно зарёкся кого-то в чем-то убеждать. Жизнь - лучший доктор.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622190
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В лазарусе всё корректно отрабатывает:

Код: pascal
1.
dt := ScanDateTime('yyyyddmm', '20132803'); // 28.03.2018
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622191
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonMyp3_u_K,

Давно зарёкся кого-то в чем-то убеждать. Жизнь - лучший доктор.
ок
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622193
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВ лазарусе всё корректно отрабатывает:

Код: pascal
1.
dt := ScanDateTime('yyyyddmm', '20132803'); // 28.03.2018


в D7 нет такого
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622199
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Myp3_u_KwadmanВ лазарусе всё корректно отрабатывает:

Код: pascal
1.
dt := ScanDateTime('yyyyddmm', '20132803'); // 28.03.2018



в D7 нет такого
Ничего страшного, код совместим и более гибок. То есть поддерживает и AM/PM и даже буквенные месяцы.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622201
Myp3_u_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanMyp3_u_Kпропущено...

в D7 нет такого
Ничего страшного, код совместим и более гибок. То есть поддерживает и AM/PM и даже буквенные месяцы.
это круто про am pm может пригодится, спасибо
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622233
_StarikPro_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62asviridenkovпропущено...


Really?Нет, ошибся. Строка будет пустая.
Честно говоря, я сталкивался с поведением когда непроинициализированные локальные стринги метода содержали данные предыдущего вызова...сам в шоке был... разбираться в проблеме не стал - просто обнулил, как обычно это и делал...
Вот такой тебе really.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622239
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_StarikPro_s62пропущено...
Нет, ошибся. Строка будет пустая.
Честно говоря, я сталкивался с поведением когда непроинициализированные локальные стринги метода содержали данные предыдущего вызова...сам в шоке был... разбираться в проблеме не стал - просто обнулил, как обычно это и делал...
Вот такой тебе really.
Посмотри что делает Delphi при присвоении S = '', если S - не пустая. Если у тебя при входе в процедуру мусор в строке, то надо разбираться откуда и почему, иначе при обращении к этой строке в будущем можно получить AV.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622243
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_StarikPro_s62пропущено...
Нет, ошибся. Строка будет пустая.
Честно говоря, я сталкивался с поведением когда непроинициализированные локальные стринги метода содержали данные предыдущего вызова...сам в шоке был... разбираться в проблеме не стал - просто обнулил, как обычно это и делал...
Вот такой тебе really.

Memory corruption или некорректная работа со стеком еще и не такие чудеса могут выдавать. Но это повод не стелить солому, а искать причины.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622354
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkov,

за лазарем как-то замечено было, что стринговый result функции не всегда пустой, приходилось явно обнулять. в делфи как-то не сталкивался ни с локальными переменными ни с результатом.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622365
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonasviridenkov,
за лазарем как-то замечено было, что стринговый result функции не всегда пустой, приходилось явно обнулять. в делфи как-то не сталкивался ни с локальными переменными ни с результатом.
Не знаю как в лазаре, а в дельфи
Код: pascal
1.
function aaaa(): string;

это, по факту
Код: pascal
1.
procedure aaaa(var Result: string);

поэтому содержимое Result может зависеть от того, что было в переменной, которой присваивается значение.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622496
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpпоэтому содержимое Result может зависеть от того, что было в переменной, которой присваивается значение.
имхо, лучше взять за правило в теле функции сразу инициализировать result
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622536
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Докalekcvpпоэтому содержимое Result может зависеть от того, что было в переменной, которой присваивается значение.
имхо, лучше взять за правило в теле функции сразу инициализировать result

под это дело у компилятора даже ворнинг есть
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622582
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpStrToDateTime
Ну так взял бы и попробовал
https://stackoverflow.com/questions/3330679/23-02-2011-123456-is-not-valid-date-and-time
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622599
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Какое отношение эта сслыка имеет к изначальному вопросу? И в догонку: как в переменную типа Char засунуть значение "ничего"?
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622616
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpИ в догонку: как в переменную типа Char засунуть значение "ничего"?
Такого значения не существует.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622685
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanalekcvpИ в догонку: как в переменную типа Char засунуть значение "ничего"?
Такого значения не существует.
Ой всё :)
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622696
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpКакое отношение эта сслыка имеет к изначальному вопросу?
а я не к начальному, а к строке типа '20150618230512'
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39622766
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11alekcvpКакое отношение эта сслыка имеет к изначальному вопросу?
а я не к начальному, а к строке типа '20150618230512'
Такую строку она тоже не обработает, потому что ей нельзя указать пустой разделитель даты/времени.
...
Рейтинг: 0 / 0
функция которая преобразует строку в datetime ро шаблону без разделителй yyyyymmdd
    #39623395
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,

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


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