Code: |
function CheckDateFormat(SDate: string): string; var IDateChar: string; x, y: integer; begin IDateChar := '.,\/'; for y := 1to length(IDateChar) do begin x := pos(IDateChar[y], SDate); while x > 0do begin Delete(SDate, x, 1); Insert('-', SDate, x); x := pos(IDateChar[y], SDate); end; end; CheckDateFormat := SDate; end;
function DateEncode(SDate:string):longint; var year, month, day: longint; wy, wm, wd: longint; Dummy: TDateTime; Check: integer; begin DateEncode := -1; SDate := CheckDateFormat(SDate); Val(Copy(SDate, 1, pos('-', SDate) - 1), day, check); Delete(Sdate, 1, pos('-', SDate)); Val(Copy(SDate, 1, pos('-', SDate) - 1), month, check); Delete(SDate, 1, pos('-', SDate)); Val(SDate, year, check); wy := year; wm := month; wd := day; try Dummy := EncodeDate(wy, wm, wd); except year := 0; month := 0; day := 0; end; DateEncode := (year * 10000) + (month * 100) + day; end; |
Формат даты
У меня есть неотложная задача: в настоящее время я разрабатываю проект, где я должен проверять достоверность введенных дат с применением маски __/__/____, например 12/12/1997.
Некоторое время назад я делал простой шифратор/дешифратор дат, проверяющий достоверность даты. Код приведен ниже.
Code: |
function CheckDateFormat(SDate: string): string; var IDateChar: string; x, y: integer; begin IDateChar := '.,\/'; for y := 1to length(IDateChar) do begin x := pos(IDateChar[y], SDate); while x > 0do begin Delete(SDate, x, 1); Insert('-', SDate, x); x := pos(IDateChar[y], SDate); end; end; CheckDateFormat := SDate; end;
function DateEncode(SDate: string): longint; var year, month, day: longint; wy, wm, wd: longint; Dummy: TDateTime; Check: integer; begin DateEncode := -1; SDate := CheckDateFormat(SDate); Val(Copy(SDate, 1, pos('-', SDate) - 1), day, check); Delete(Sdate, 1, pos('-', SDate)); Val(Copy(SDate, 1, pos('-', SDate) - 1), month, check); Delete(SDate, 1, pos('-', SDate)); Val(SDate, year, check); wy := year; wm := month; wd := day; try Dummy := EncodeDate(wy, wm, wd); except year := 0; month := 0; day := 0; end; DateEncode := (year * 10000) + (month * 100) + day; end; |
https://delphiworld.narod
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!