Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование дат, Преобразование дат 
:(
    Опции темы
Serebah
Дата 9.2.2011, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2011

Репутация: нет
Всего: нет



Даты хранится в виде "января 2011, февраля 2011, марта 2011 и т.д."
Как ее можно преобразовать в 01.01.2011, 01.02.2011, 01.03.2011 и т.д.
PM MAIL   Вверх
CROTishka
Дата 9.2.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: нет
Всего: 2



где они хранятся? скуль, или просто текст? если просто текст, то в DateUtils нет ничего похожего, придётся  самому разбирать. 
и вообще, в чём проблема? это же всего пара строк!
PM MAIL   Вверх
Serebah
Дата 9.2.2011, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2011

Репутация: нет
Всего: нет



Даты хранятся в виде текста. То что писать нужно функцию самому, это я знаю. Только еще я новичек в программировании и сам не могу разобраться. Может подскажите в общих чертах хоть?
PM MAIL   Вверх
Данкинг
Дата 9.2.2011, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Код

function dater (sss:string):string;
 begin
  if pos('января',sss)<>0 then result:='01.01.2011';
  ...
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Serebah
Дата 9.2.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2011

Репутация: нет
Всего: нет



Спасибо большое. А если года у меня могут быть разные как это отобразить?
PM MAIL   Вверх
CROTishka
Дата 9.2.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: нет
Всего: 2



не, я нагнал. в DateUtils действительно нет ничего подобного. 
но в SysUtils есть 
StrToDateTime 
и 
FormatDateTime
это то, что вас интересует.

Добавлено через 53 секунды
Цитата

Спасибо большое. А если года у меня могут быть разные как это отобразить? 

не слушайте его. пишите нормальный код.
PM MAIL   Вверх
Serebah
Дата 9.2.2011, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2011

Репутация: нет
Всего: нет



SysUtils не подходят.

FormatDateTime форматирует в январь, февраль и т.п.
А у меня января , февраля и т.п.
PM MAIL   Вверх
Данкинг
Дата 9.2.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



CROTishka, чем тебе моя эксклюзивная функция не нравится? smile Тем более, где в SysUtils всякие "января" конвертируются?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Frees
Дата 9.2.2011, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Код

ShowMessage(DateToStr(VarToDateTime('января 2011')))


есть ограничения, региональные стандарты должны быть русские..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Serebah
Дата 9.2.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 2.2.2011

Репутация: нет
Всего: нет



Данкинг, 

Я хочу сделать по эксклюзивной функции.
Только если у месяцов год разный, то как его тоже менять?
PM MAIL   Вверх
kami
Дата 9.2.2011, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Вариант "в лоб". Строка должна быть вида "<месяца> 2010". Ведущие пробелы, заглавные буквы, любые символы после "2010" не допускаются, ибо в приведенном варианте год высчитывается как "всё, что после пробела". Как решить - оставляю Вам в качестве домашнего задания. Подсказка №1 - функция AnsiLowerCase.

Код

const
  Months : array[1..12] of string = (
    'ÿíâàðÿ', 'ôåâðàëÿ', 'ìàðòà',
    'àïðåëÿ', 'ìàÿ', 'èþíÿ', 'èþëÿ',
    'àâãóñòà','ñåíòÿáðÿ','îêòÿáðÿ','íîÿáðÿ', 'äåêàáðÿ');
var
  SpacePos:integer;
  i:integer;
  sMonth:string;
  cMonth:Word;
  cYear:Word;
begin
  SpacePos:=Pos(' ', Edit1.Text);
  sMonth:=Copy(Edit1.Text, 1, SpacePos-1);
  cMonth:=0;
  for i:=Low(Months) to High(Months) do
    if sMonth = Months[i] then
      begin
        cMonth:=i;
        Break;
      end;
  cYear:=StrToInt(Copy(Edit1.Text, SpacePos+1, Length(Edit1.Text)));

  Result:=EncodeDate(cYear, cMonth, 1);


Добавлено через 3 минуты и 33 секунды
Лень править (кодировка не совпала), в массиве Months лежат 'января','февраля','марта'...
PM MAIL WWW   Вверх
superVad
Дата 10.2.2011, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



kami, когда копируешь переключись в винде на русскую раскладку.
PM MAIL   Вверх
northener
Дата 10.2.2011, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(kami @  9.2.2011,  20:30 Найти цитируемый пост)
Вариант "в лоб"

Точнее "лбом об пол". Без результата. smile
Цитата(kami @  9.2.2011,  20:30 Найти цитируемый пост)
Строка должна быть вида

Лучше всего, если строка имеет "стандартный" вид, который понятен процедурам Дельфи и Windows.

Добавлено через 11 минут и 21 секунду
Цитата(Serebah @  9.2.2011,  16:07 Найти цитируемый пост)
Даты хранится в виде "января 2011, февраля 2011, марта 2011 и т.д."
Как ее можно преобразовать в 01.01.2011, 01.02.2011, 01.03.2011 и т.д. 


В данном случае (и в подобных ему) не стоит искать "стандартных" решений. Нужно всегда находить собственное решение для конкретной задачи!


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 10.2.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Serebah @  9.2.2011,  16:07 Найти цитируемый пост)
Даты хранится в виде "января 2011, февраля 2011, марта 2011 и т.д."Как ее можно преобразовать в 01.01.2011, 01.02.2011, 01.03.2011 и т.д.

Ну, добавлю и я свои 5 копеек.

Код

d:= StrToDate(ReplaceString(sss, 'января ','01.01.', [rfReplaceAll, rfIgnoreCase]));

и таких 12 строк.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
kami
Дата 10.2.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(superVad @  10.2.2011,  00:13 Найти цитируемый пост)
когда копируешь переключись в винде на русскую раскладку.

не помогает :(

Цитата(northener @  10.2.2011,  02:13 Найти цитируемый пост)
Точнее "лбом об пол". Без результата.

Поясните. Где я не прав?
Цитата(northener @  10.2.2011,  02:13 Найти цитируемый пост)
Лучше всего, если строка имеет "стандартный" вид, который понятен процедурам Дельфи и Windows.

В условии задачи строка нестандартного вида. Не всегда бывает как лучше, иногда случается "должно быть так".
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.