Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
Delphi 6-7

Проверить являются ли числа форматом дата/месяц/год

24.03.2022, 00:48. Показов 1793. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте, как выполнить проверку является ли число форматом месяц дата год

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var
S,d:string;
begin
d:='3/10/2023';
//d:='4/28/2022';
//d:='6/30/2022';
//d:='10/20/2022';
s:=FormatDateTime( 'mm/dd/yy', d);
if s>'' then 
memo1.Lines.Add(S);
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2022, 00:48
Ответы с готовыми решениями:

Как в maskedit с форматом даты увеличить ее на год, месяц или день?
Есть маскэдит. Маска ввода Дата. Надо чтобы при нажатии на кнопку эта дата увеличивалась. Надо чтобы пользователь сам что увеличить( ну это...

Создать файл f, содержащий разные даты. Каждая дата - это число, месяц, год
создать файл f содержащей разные даты каждая дата это число месяц год

Дан файл f, содержащий различные даты. Каждая дата – это число, месяц и год. Найти самую позднюю дату
Дан файл f, содержащий различные даты. каждая дата – это число, месяц и год. Найти самую позднюю дату. Нужна помощь программой!

39
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
24.03.2022, 01:00
Число не содержит никакого форматирования, форматировать можно только строковой результат. Функция FormatDateTime вторым аргументом требует число, а не строку. Так чего на самом деле вы пытаетесь добиться?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 01:03  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
Число не содержит никакого форматирования, форматировать можно только строковой результат. Функция FormatDateTime вторым аргументом требует число, а не строку. Так чего на самом деле вы пытаетесь добиться?
Просто является ли полученные числа месяц дата год или нет и возможно поменять разделитель ещё придётся если является
0
пофигист широкого профиля
4764 / 3200 / 861
Регистрация: 15.07.2013
Сообщений: 18,578
24.03.2022, 01:19
Цитата Сообщение от Uefi220 Посмотреть сообщение
Просто является ли полученные числа месяц дата год или нет
Числа или строки?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 01:26  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Числа или строки?
Ну там строками идут числа формат string
0
пофигист широкого профиля
4764 / 3200 / 861
Регистрация: 15.07.2013
Сообщений: 18,578
24.03.2022, 01:41
Т.е. грамотно говоря на входе есть строка содержащая символы цифр и некие символы типа двоеточия, слеша и т.п.
И нужно понять может ли эта строка быть записью некоей даты. Так?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 01:45  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Т.е. грамотно говоря на входе есть строка содержащая символы цифр и некие символы типа двоеточия, слеша и т.п.
И нужно понять может ли эта строка быть записью некоей даты. Так?
Прямо точно вот так идут строки:
3/10/2023
4/28/2022
6/30/2022
10/20/2022
Но может быть строка не содержащая в себе набор дата месяц год например:
1151055
9999985
5521455
0054554
6546655
На самом деле да нужно понять может ли быть полученная строка датой месяцем годом или нет и если она таковыми является то сменить разделитель / на любой другой
0
пофигист широкого профиля
4764 / 3200 / 861
Регистрация: 15.07.2013
Сообщений: 18,578
24.03.2022, 01:58
Ну как понимать тебя, Саид?
Цитата Сообщение от Uefi220 Посмотреть сообщение
Прямо точно вот так идут строки:
3/10/2023
4/28/2022
6/30/2022
10/20/2022
Ну это понятно. Тут действительно даты.
Цитата Сообщение от Uefi220 Посмотреть сообщение
Но может быть строка не содержащая в себе набор дата месяц год например:
1151055
9999985
5521455
0054554
6546655
Но если по твоим словам эти строки не содержат в себе дату, то что проверять?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 02:02  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Но если по твоим словам эти строки не содержат в себе дату, то что проверять?
Просто если формат дата менять разделитель на пустоту и всё что мне нужно со вторым проблем нету с первым есть как понять что формат действительно дата =)
0
пофигист широкого профиля
4764 / 3200 / 861
Регистрация: 15.07.2013
Сообщений: 18,578
24.03.2022, 02:16
Цитата Сообщение от Uefi220 Посмотреть сообщение
Просто если формат дата менять разделитель на пустоту и всё что мне нужно со вторым проблем нету с первым есть как понять что формат действительно дата =)
Переведи на русский пожалуйста.
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 02:22  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Переведи на русский пожалуйста.
Delphi
1
2
3
4
5
6
7
var
s:string;
begin
s:='3/10/2023';
if строка s является форматом месяц/дата/год then
s:=StringReplace(s, '/', '', [rfReplaceAll, rfIgnoreCase]); //меняем (удаляем) разделитель
memo1.lines.add(s); // что получилось то у нас в итоге
0
пофигист широкого профиля
4764 / 3200 / 861
Регистрация: 15.07.2013
Сообщений: 18,578
24.03.2022, 02:59
Uefi220, это то то понятно.
А что нужно сделать в случае
Цитата Сообщение от Uefi220 Посмотреть сообщение
Но может быть строка не содержащая в себе набор дата месяц год например:
1151055
9999985
5521455
0054554
6546655
???
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 03:02  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
А что нужно сделать в случае
А ничего просто оставить строку как есть и всё
0
Модератор
 Аватар для D1973
9846 / 6387 / 2451
Регистрация: 21.01.2014
Сообщений: 27,153
Записей в блоге: 3
24.03.2022, 04:54
Если правильно я Вас понял, то Вам надо следующее:
1. Идти по списку строк
2. Если очередная строка может быть представлена как дата в формате m/dd/yyyy - удаляем в этой строке разделители
3. Если нет - переходим к следующей строке.

Если так - то вот:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  FS: TFormatSettings;
  s: String;
  i: integer;
  d: TDateTime;
begin
  FS.DateSeparator := '/';
  FS.ShortDateFormat := 'm/dd/yyyy';
  Memo2.Clear;
  for i := 0 to Memo1.Lines.Count - 1 do begin
    s := Memo1.Lines[i];
    if (Pos(FS.DateSeparator, s) <> 0) and (TryStrToDate(s, d, FS))
      then s := StringReplace(s, FS.DateSeparator, ' ', [rfReplaceAll]);
    Memo2.Lines.Add(s);
  end;
end;
Миниатюры
Проверить являются ли числа форматом дата/месяц/год  
1
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 05:09  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Если правильно я Вас понял, то Вам надо следующее:
Немного нет вот накидал пример только он ошибку вываливает:
Обратите внимание разделитель ddmmyy 1 (единица) а выходной формат который мне нужен вообще без разделителя должен быть циклы ненужны строка итак только одна заполняется
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function StringToDT(DateStr: String): string;
begin
DateSeparator:= '1';
try
Result:= DateToStr(strtodate(datestr));
  except
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
d:string;
begin
d:='613012022';
memo1.Lines.Add(StringToDT(d));
end;
 
//Хочу получить 6302022
0
Модератор
 Аватар для D1973
9846 / 6387 / 2451
Регистрация: 21.01.2014
Сообщений: 27,153
Записей в блоге: 3
24.03.2022, 05:12
Цитата Сообщение от Uefi220 Посмотреть сообщение
только он ошибку вываливает:
которую я сам угадать должен?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 05:14  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
которую я сам угадать должен?
is not a valid a date
0
Модератор
 Аватар для D1973
9846 / 6387 / 2451
Регистрация: 21.01.2014
Сообщений: 27,153
Записей в блоге: 3
24.03.2022, 05:16
Цитата Сообщение от Uefi220 Посмотреть сообщение
d:='613012022';
memo1.Lines.Add(StringToDT(d));
ну так а что в итоге в мемо появиться должно? Вот в данном конкретном случае?
0
-11 / 9 / 1
Регистрация: 20.06.2021
Сообщений: 768
24.03.2022, 05:17  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
ну так а что в итоге в мемо появиться должно? Вот в данном конкретном случае?
В случаe если формат действительно MMDDYY Хочу получить просто 6302022 без разделителя в виде единицы, а если формат не является MMDDYY оставить строку как есть
0
Модератор
 Аватар для D1973
9846 / 6387 / 2451
Регистрация: 21.01.2014
Сообщений: 27,153
Записей в блоге: 3
24.03.2022, 05:23
ну хорошо, а как тогда программа должна отреагировать на такую запись:
1111112011
???
Да, эту запись можно преобразовать в дату 11/11/2011. Но как, по Вашему, дать программе понять, какая единица - разделитель, а какая - нет. Вам не кажется, что использовать в качестве разделителя символ, встречающийся в номерам для, месяца, года - это не самая удачная затея, если прямее не сказать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2022, 05:23
Помогаю со студенческими работами здесь

Дана дата в виде строки в американском формате месяц/день/год. Переделать ее в русский формат день.месяц.год
Создать функцию. Дана дата в виде строки в американском формате месяц/день/год. Переделать ее в русский формат день.месяц.год. ...

Неполная Дата - только год, или год и месяц, или день и месяц без года
Здравствуйте уважаемые! Подскажите пожалуйста, можно ли в Access реализовать поле &quot;Дата&quot;, так же как в 1С - т.е., что бы была...

Файлы. Каждая дата - это число, месяц и год. Найти год с наименьшим номером
Дан файл, содержащий различные данные. Каждая дата - это число, месяц и год. найти год с наименьшим номером.

Дана дата из трех чисел (день, месяц и год). Вывести yes, если такая дата существует
Здравствуйте. Помогите пожалуйста написать программу. Дана дата из трех чисел (день, месяц и год). Вывести yes, если такая дата существует...

Дан файл, содержащий различные даты. Каждая дата — это число месяц и год. Найти год с наименьшим номером
Дан файл, содержащий различные даты. Каждая дата — это число месяц и год. Найти год с наименьшим номером.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Гайд по современным СУБД (небесспорный)
Codd 26.06.2025
Когда я только начинал свой путь в IT как рядовой программист, база данных казалась мне чем-то простым и понятным. Ну, серьезно — это же просто место, где лежат данные, верно? Напиши SELECT * FROM. . .
Использование C# с AWS S3: Примеры с AWS SDK для .NET
stackOverflow 26.06.2025
Amazon S3 (Simple Storage Service) уже давно стал стандартом де-факто в мире облачного хранения данных. Особенно приятно, что для разработчиков . NET предусмотрен отличный SDK, который значительно. . .
Веб-автоматизация с Python и Selenium
AI_Generated 25.06.2025
Selenium с Python — это комбинация, которая выдержала проверку временем. Несмотря на появление новых инструментов вроде Playwright или Puppeteer, связка Python-Selenium остаётся золотым стандартом. . .
CQRS и Event Sourcing на C#
ArchitectMsa 25.06.2025
За последние несколько лет сложность корпоративных приложений выросла в геометрической прогрессии. Простые монолитные системы уступили место распределенным микросервисам, а нагрузка на корпоративные. . .
Хак домофона или как открыть дверь по номеру
yariko 25.06.2025
Забыли дома ключ. Не проблема. Можно открыть дверь домофона, просто позвонив на свой номер квартиры. Идея состоит в следующем. Внутрь трубки абонента встраивается контроллер, который по звонку сам. . .
Как украсить новогоднюю елку с Q# и Qiskit
EggHead 24.06.2025
Что может быть необычнее, чем применить законы квантовой механики для украшения новогодней елки? Пока другие развешивают обычные гирлянды, я решил объединить свою страсть к квантовым вычислениям с. . .
Системы нулевого доверия на C#
UnmanagedCoder 24.06.2025
Традиционная архитектура безопасности работает по принципу средневекового замка: создаём высокие стены вокруг корпоративной сети, укрепляем ворота межсетевыми экранами и системами обнаружения. . .
Снова не мой путь. Циклическое среднее, я обеими руками за проверку условия, в ракурсе данной задачи - циклическое среднее в топку.
Hrethgir 24.06.2025
Привет. Такой вопрос - нужно выводить среднее математическое между двумя направлениями, интервал значений которых может лежать в диапазоне одного оборота по кругу. Проблема заключается в том, что. . .
Деплой Flask приложения
py-thonny 23.06.2025
За годы работы с Flask я натыкался на одни и те же грабли достаточно часто, чтобы наконец научится их обходить. И сегодня хочу поделится опытом, который сбережет вам немало нервных клеток. Начнем с. . .
WebAssembly и контейнеры в .NET Aspire для оркестрации распределенных архитектур
ArchitectMsa 23.06.2025
Я наблюдаю, как WebAssembly (или просто WASM) постепенно выходит за рамки своего первоначального предназначения — исполнения кода на стороне браузера. Теперь эта технология проникает в серверную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »