![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| leniviy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
Делаю аццкий проект по агрегации данных. Есть желание сделать логику, чтобы можно было группировать не просто по год/месяц/день/час/минута, а, например, по 3*3 года, 10*35 дней и 2*5 часов.
Для этого надо текущую дату округлять до начала текущего/конца предыдущего периода. А чтобы это сделать, надо знать, сколько таких периодов прошло с какой-то начальной даты , например, 1970 года. И надо учитывать летнее время, високосные годы и т.д. Функцию для подсчёта я написал, но может у кого есть вариант получше
Это сообщение отредактировал(а) leniviy - 22.12.2010, 00:21 |
||||
|
|||||
| mgarin |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
Может я конечно буду не прав...
Не проще как-то так?:
Таким нехитрым образом вы получите время начала текущего года (ну это я к примеру привел). Можете так же например откатывать время на 3 месяца:
Calendar сам все сделает за вас, даже если это будет 1ый месяц года - он переведет год на 1 назад и т.д. Вариантов море. Думаю и то что Вы пытаетесь сделать можно сделать таким путем Например в вашем случае Вы можете установить начальную дату и добавляя по 3 месяца (например) получить нужные промежутки Либо, если я неправильно понял вопрос, извиняюсь... Это сообщение отредактировал(а) mgarin - 25.12.2010, 22:14 |
||||||
|
|||||||
| leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
Вначале я так и делал, но проблемы начались с 1 апреля 1981 г.: 1 марта 1981 0:00 cal.add ( Calendar.MONTH, 1); -> 1 апреля 1981 1:00 cal.add ( Calendar.MONTH, 1); -> 1 мая 1981 1:00 Это сообщение отредактировал(а) leniviy - 25.12.2010, 22:40 |
|||
|
||||
| mgarin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 19.8.2009 Где: Санкт-Петербург Репутация: 1 Всего: 3 |
А вам именно так нужно увеличивать дату?
Через set по идее не должно появляться этой разницы в час (как мне кажется, не проверял) Да и даже если появляется - всегда можно насильно сбросить в 0 - в чем проблема?) Это сообщение отредактировал(а) mgarin - 25.12.2010, 22:45 |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
как раз в марте перевод часов на летнее время. что бы это не сказывалось на программе, почитайте FAQ (была статья на этом форуме - ищите) |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |