Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
1

Запрос у пользователя даты в кратком формате и ее вывод в полном формате

13.11.2016, 16:17. Показов 2153. Ответов 21
Метки нет (Все метки)

Нужна программа запрашивающую у пользователя дату в кратком формате дд.мм.гг (например: 15.10.2005), и отображающую эту дату в полном формате (например: 15 октября 2005 года) в Delphi. Я в delphi почти не работал и написал в PascalABC.NET, в Delphi естественно не работает, как передлать под Delphi?

Pascal
1
2
3
4
5
6
7
begin
  var cm:array[1..12] of string:=
    ('января','февраля','марта','апреля','мая','июня',
    'июля','августа','сентября','октября','ноября','декабря');
  var dmy:=ReadlnString('Дата в формате ДД.ММ.ГГГГ:').ToWords('.');
  Writeln(dmy[0]+' '+cm[dmy[1].ToInteger]+' '+dmy[2]+' года')
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2016, 16:17
Ответы с готовыми решениями:

Получить иконку в формате ico и сохранить ее в формате png
Здравствуйте. Мне нужно получить иконку в формате ico и сохранить ее в формате png. Использую...

Ввод даты в заданном формате.
На форме располагается таблица StringGrid с 3 строками. Число столбцов в диапа-зоне 3 .. 7 задается...

Создайте программу которая введённую в цифровом формате дату выводит в полном формате
Создайте программу которая введённую в цифровом формате дату выводит в полном формате. Пример: ...

Вывод даты в ясейку Excel в формате даты
Здравствуйте. Пытаюсь вывести из табличной части обработки 1с дату в ячейку Excel: Лист.Cells(Стр...

21
3842 / 3273 / 858
Регистрация: 29.08.2013
Сообщений: 21,496
Записей в блоге: 2
13.11.2016, 16:45 2
то есть вы хотите только месяц в текст перевести?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Monthstr(S: string): string;
const
  Mes: array[1..12] of string = ('января', 'февраля', 'марта', 'апреля',
    'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября',
      'декабря');
var
  Year, Month, Day: Word;
begin
  try
    StrToDate(S); // пр-ка правильности ввода даты
    DecodeDate(StrToDate(S), Year, Month, Day);
    Result := IntToStr(day);
    Result := Result + ' ' + Mes[Month];
    Result := result + ' ' + IntToStr(Year) + ' года';
  except
    raise
      Exception.Create('"' + s + '"' + ' - такой даты нет!');
  end;
end;
вот примерно такая функция вам нужна
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
13.11.2016, 18:40 3
Program Data, в консоли?

Добавлено через 9 минут
много вариантов решения задачи, можно например stringreplace или с copy повозиться...
0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
13.11.2016, 20:10  [ТС] 4
Да в консоле нужно, через stringreplace пока не получается сделать
0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
13.11.2016, 20:37  [ТС] 5
Не работает
0
3842 / 3273 / 858
Регистрация: 29.08.2013
Сообщений: 21,496
Записей в блоге: 2
13.11.2016, 23:12 6
что именно?
0
Эксперт Pascal/Delphi
4735 / 2714 / 841
Регистрация: 04.10.2012
Сообщений: 9,900
14.11.2016, 11:55 7
Цитата Сообщение от cfbogd Посмотреть сообщение
можно например stringreplace или с copy повозиться
не очень хороший совет.

Program Data, можно так

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const
 stMonth : array[1..12] of string[8] =
('января','февраля','марта',
'апреля', 'мая','июня','июля',
'августа','сентября', 'октября',
'ноября','декабря');
var
myDate: TDateTime; // дата
Year, Month, Day : Word;
begin
Writeln('Введите дату в формате дд.мм.гггг');
Read(myDate);  //задаем дату
DecodeDate(myDate, Year, Month, Day);
Writeln(Day,' ',stMonth[Month],' ',Year,' года');
Readln;
end.
либо проще с помощью процедуры DateTimeToString:

Delphi
1
2
3
4
5
6
7
8
9
10
var
myDate:TDateTime;
FormattedDate:string;
begin
Writeln('Введите дату в формате дд.мм.гггг');
Read(myDate);  //задаем дату
DateTimeToString(FormattedDate, 'dddddd', myDate);
Writeln(FormattedDate);
Readln;
end.
0
2645 / 1474 / 500
Регистрация: 29.05.2013
Сообщений: 6,428
14.11.2016, 13:48 8
Если речь идет только о месяце, то можете дальше не читать, но если все-же о полной дате, то вот вам вопрос на думалку. Если пользователь введет дату 01.01.17 Какая дата должна быть на выходе?
0
9 / 9 / 2
Регистрация: 07.11.2016
Сообщений: 67
Записей в блоге: 1
14.11.2016, 14:39 9
Пытливый, Возможно
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program test1;
var cm:array[1..12] of string=
   ('января','февраля','марта','апреля','мая','июня',
   'июля','августа','сентября','октября','ноября','декабря');
 datatext: string;
//Для полного вывода даты:
begin
  {для получения числа :=datatext[1]+datatext[2]
    для получения месяца:=datatext[4]+datatext[5]
    для года :=datatext[7]+datatext[8]+datatext[9]+datatext[10]}
  readln(datatext);
  writeln('День: '+datatext[1]+datatext[2]+' Месяц: '+datatext[4]+datatext[5]+' Год: '+datatext[7]+datatext[8]+datatext[9]+datatext[10]);
  readln
end.
Полный вывод
0
Модератор
7273 / 4756 / 1996
Регистрация: 21.01.2014
Сообщений: 20,218
Записей в блоге: 3
14.11.2016, 16:54 10
pavellevshic, Пытливый задал правильный вопрос: какой именно год указывать при такой записи: 01.01.17 : 1917-й или 2017-й? А Вы предлагаете, уж извините, полную ерунду...
0
9 / 9 / 2
Регистрация: 07.11.2016
Сообщений: 67
Записей в блоге: 1
14.11.2016, 17:17 11
D1973, я в коде сделал 4 символа года, чтоб не париться
0
Модератор
7273 / 4756 / 1996
Регистрация: 21.01.2014
Сообщений: 20,218
Записей в блоге: 3
14.11.2016, 17:32 12
pavellevshic, откуда они возмуться, эти 4 цифры, если дата задана как "01.01.17"?
В этом-то и вопрос...
0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
26.11.2016, 15:06  [ТС] 13
Нужна программа запрашивающую у пользователя дату в кратком формате дд.мм.гг (например: 15.10.2005), и отображающую эту дату в формате (например: 15 октября 2005 года) в Delphi. Есть такой код, но мне нужна эта программа в консоли, прощу помочь.



f
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
unction Monthstr(S: tdatetime): string;
const
Mes: array[1..12] of string = ('января', 'февраля', 'марта', 'апреля',
'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября',
'декабря');
var
Year, Month, Day: Word;
begin
try
// пр-ка правильности ввода даты
DecodeDate(S, Year, Month, Day);
Result := ''+IntToStr(day);
Result := Result + ' ' + Mes[Month];
Result := result + ' ' + IntToStr(Year) + ' года';
except
raise
Exception.Create('"' + datetostr(s) + '"' + ' - такой даты нет!');
end;
end;
0
3842 / 3273 / 858
Регистрация: 29.08.2013
Сообщений: 21,496
Записей в блоге: 2
26.11.2016, 15:17 14
а в чем проблема то?
readln отменили?
запрашивайте строку, пробуйте перевести ее в дату
0
cfbogd
26.11.2016, 15:23
  #15

Не по теме:

ctrl+c и ctrl+v не работает?

0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
26.11.2016, 20:26  [ТС] 16
Все пробовал, не работает

Добавлено через 5 часов 0 минут
Сделал такую прогу, только выделяет date: TDate;


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program a;
{$APPTYPE CONSOLE}
 
uses SysUtils; 
 
const
 months: array[1..12] of string = ('января','февраля','марта','апреля',
 'мая','июня','июля','августа','сентября','октября','ноября','декабря');
var
 input: string;
 date: TDate;
 frmt: TFormatSettings;
begin
 ReadLn(input);
 frmt.LongMonthNames := months;
 if TryStrToDate(input, date) then
 WriteLn(FormatDateTime('dd mmmm yyyy', date, frmt) + ' года')
 else
 WriteLn('Ошибка, некорректный формат даты');
 ReadLn;
end.
0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
26.11.2016, 20:44  [ТС] 17
Нужна программа запрашивающую у пользователя дату в кратком формате дд.мм.гг (например: 15.10.2005), и отображающую эту дату в формате (например: 15 октября 2005 года) в Delphi. Есть такой код в консоли, но выделяет строку

Delphi
1
formatSettings.LongMonthNames:= months;
Если удаляю, то не выводит месяц, в чем проблема?


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program a;
{$APPTYPE CONSOLE}
 
uses SysUtils;
 
const
months: array[1..12] of string = ('января','февраля','марта','апреля',
'мая','июня','июля','августа','сентября','октября','ноября','декабря');
var
input: string;
date: TDateTime;
formatSettings: TFormatSettings;
begin
ReadLn(input);
[COLOR="DarkRed"]formatSettings.LongMonthNames:= months;[/COLOR]
if TryStrToDate(input, date) then
WriteLn(FormatDateTime('dd mmmm yyyy', date,  formatSettings) + ' года')
else
WriteLn('Ошибка, некорректный формат даты');
ReadLn;
end.
0
3842 / 3273 / 858
Регистрация: 29.08.2013
Сообщений: 21,496
Записей в блоге: 2
26.11.2016, 21:16 18
так вы в uses не подключили модуль работы с датой
0
3842 / 3273 / 858
Регистрация: 29.08.2013
Сообщений: 21,496
Записей в блоге: 2
26.11.2016, 21:19 19
Цитата Сообщение от Program Data Посмотреть сообщение
но выделяет строку
не только выделяет, но и пишет ПОЧЕМУ выделяет

вы бы еще и ошибку выкладывали, а не только темы создавали кучами
0
0 / 0 / 0
Регистрация: 11.05.2016
Сообщений: 17
26.11.2016, 21:24  [ТС] 20
[Error] Project2.dpr(15): Incompatible types
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2016, 21:24

Вывод даты из БД в русском формате
Всем привет. Сейчас, при выводе даты из бд она выводится в том же формате, что и там - 2015-03-11...

Вывод даты в определенном формате
Необходимо вывести дату ближайшей доставки в формате: "30 ноября". Алгоритм следующий: если сегодня...

Вывод даты в нужном формате
Здравствуйте! Добавлено через 11 минут Здравствуйте! От предыдущего админа остался...

вывод даты в формате дд.мм.гггг
здравствуйте. Я использую бд SQL 2008 там даты хранятся в формате гггг-мм-дд, как мне в делфи...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.