Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с датой 
:(
    Опции темы
Majesty
Дата 15.10.2010, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



Нужно добавить к определённой дате 40 недель
Код

int WEEK = 7*24*3600*1000;
long tstamp = DateField.getDate().getTime(); // задали 27.04.2010

Calendar c = Calendar.getInstance();
c.setTime(new Date(tstamp + 40*WEEK));

String pEndDate = String.valueOf(
   c.get(Calendar.DAY_OF_MONTH)
) + "." + String.valueOf(
   c.get(Calendar.MONTH)
) + "." + String.valueOf(
   c.get(Calendar.YEAR)
); // и получили 3.3.2010
Почему так происходит и как сделать правильно?

Это сообщение отредактировал(а) Majesty - 15.10.2010, 08:30
PM MAIL WWW   Вверх
sanboll
Дата 16.10.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проблемма в c.get(Calendar.MONTH). Он возвращает КОНСТАНТУ, а не номер месяца.

Calendar.JANUARY - январь,  Calendar.FEBRUARY - февраль и т.д.
PM MAIL   Вверх
Majesty
Дата 16.10.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



Цитата(sanboll @  16.10.2010,  13:46 Найти цитируемый пост)
Проблемма в c.get(Calendar.MONTH). Он возвращает КОНСТАНТУ, а не номер месяца.
я, видимо, совсем тупой... документация утверждает, что
Цитата
Returns:
the value for the given time field.
т.е. не константу, а всё-таки значение... это во-первых.
во-вторых, год тоже не попадает. должно быть примерно 27 января 2011 года, а не 3 апреля 2010.
PM MAIL WWW   Вверх
Antropoid
Дата 16.10.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



у тебя просто Overflow получается. Сам смотри
Код

long WEEK = 40*7*24*3600*1000;
System.out.println(WEEK);

-1577803776


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Majesty
Дата 17.10.2010, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



Хммм... Понятно. Как же тогда сконструировать дату на 40 недель больше, чем текущая?
PM MAIL WWW   Вверх
Antropoid
Дата 17.10.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



в цикле например прибавлять по одной неделе


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Majesty
Дата 18.10.2010, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



Тоже думал об этом. Некрасивое и более медленное решение smile
PM MAIL WWW   Вверх
firedrago
Дата 18.10.2010, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



зачем все так сложно ?!

c.add(Calendar.WEEK_OF_YEAR, 40);

Код

long tstamp = DateField.getDate().getTime(); // задали 27.04.2010
Calendar c = Calendar.getInstance();
c.setTime(new Date(tstamp));
c.add(Calendar.WEEK_OF_YEAR,40);
String pEndDate = String.valueOf(
   c.get(Calendar.DAY_OF_MONTH)
) + "." + String.valueOf(
   c.get(Calendar.MONTH)
) + "." + String.valueOf(
   c.get(Calendar.YEAR)
); // и получили 3.3.2010

PM MAIL   Вверх
Majesty
Дата 18.10.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



К сожалению, в документации ни слова нет про метод Calendar.add(), а компилятор ничего не знает про поле Calendar.WEEK_OF_YEAR :(
PM MAIL WWW   Вверх
Antropoid
Дата 18.10.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

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



Цитата(Majesty @  18.10.2010,  05:42 Найти цитируемый пост)
Некрасивое и более медленное

?
Тебя точно эти параметры беспокоят?  smile 


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Majesty
Дата 18.10.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

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



Цитата(Antropoid @  18.10.2010,  11:43 Найти цитируемый пост)
Тебя точно эти параметры беспокоят?
да, в общем-то, нет smile рассчитывается однажды в одном месте, плюс при желании можно закешировать в RecordStore (хотя это и лишнее)... но некрасиво - да smile костыль, так сказать...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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