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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программно узнать прошло больше суток или нет 
V
    Опции темы
Entry_N3
  Дата 21.8.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Допустим, есть 24.08.07 14:33 и 25.08.07 12:05.

Программно узнать прошло больше суток или нет (с учетом часов и минут)?
PM MAIL   Вверх
_Michael
Дата 21.8.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не вижу ничего сложного: smile
Код

        boolean moreThan1day = false;
        boolean punctually1day = false;
        long dayOffset = 86400; // 1 сутка в секундах

//        Те даты которые надо протестовать
        Date d1 = new Date(2007,7,25,12,37,33);
        Date d2 = new Date(2007,7,24,14,39,00);
        
        long t1 = d1.getTime();
        long t2 = d2.getTime();

        long offset = (t1-t2 )/ 1000;
        
        if( ((dayOffset - 60) < offset && offset < (dayOffset + 60)) ||
                ((dayOffset + 60) > -offset && -offset > (dayOffset - 60)) )
            punctually1day = true;
        
        if( ( offset >= dayOffset+60 || offset <= -(dayOffset+60) ) ) 
            moreThan1day = true;
        System.out.println(punctually1day ? "Exactly 1 day!" : moreThan1day ? "More than 1 day": "Less than 1 day");
 Както так например. smile Можно конечно иф-елсе операторами, сравнивать сначала год потом месяц потом день, но так вроде удобнее smile

Это сообщение отредактировал(а) _Michael - 21.8.2007, 23:23


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
nornad
Дата 22.8.2007, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Это вчерашни день. Только вот я сегодняшний не помню. Но как-то всё же использовал один класс, который позволял прибавлять-отнимать числа от дат. Надо в жабадоке покопаться...


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Entry_N3
Дата 22.8.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, буду разбираться.
PM MAIL   Вверх
hamsterKSU
Дата 22.8.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



для работы с датой можно воспользоватся классом  Calendar
PM MAIL ICQ   Вверх
Entry_N3
  Дата 22.8.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



_Michael, а обязательно использовать такой конструктор new Date(2007,7,25,12,37,33)?
PM MAIL   Вверх
_Michael
Дата 22.8.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(hamsterKSU @  22.8.2007,  10:22 Найти цитируемый пост)
для работы с датой можно воспользоватся классом  Calendar 

ет без раницы если не считать что те конструкторы которые я использовал deprecated. Что у обьектов Date что у обьектов Calendar есть методы getTime() и getTimeInMillis() соответственно, для представления времени как long. smile

Добавлено через 55 секунд
Цитата(Entry_N3 @  22.8.2007,  10:37 Найти цитируемый пост)
_Michael, а обязательно использовать такой конструктор new Date(2007,7,25,12,37,33)? 

smile Конечно что нет. Ет так первое что в голову пришло

Это сообщение отредактировал(а) _Michael - 22.8.2007, 10:39


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Entry_N3
  Дата 22.8.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Посмотрел, вроде, можно, не искажает.
PM MAIL   Вверх
_Michael
Дата 22.8.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Например вот так можно, если с Сalendar'ем : smile
Код

    Calendar c = new GregorianCalendar();
    c.set(2007, 7, 7, 12, 54);
    long time  = c.getTimeInMillis();



--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Maksym
Дата 22.8.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Код

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class TimeIsRunningOut {

    public static void main(String[] args) throws ParseException {
        String dateStr = "21.08.2007 12:14:30";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); 
        Date date = simpleDateFormat.parse(dateStr);
        System.out.println(is24HoursRunOut(date));
    }
    
    
    public static boolean is24HoursRunOut(Date date) {
        Calendar calendar = Calendar.getInstance();        
        calendar.setTime(date);
        calendar.add(Calendar.HOUR_OF_DAY, 24);
        if (Calendar.getInstance().after(calendar)) {
            return true;
        } else {
            return false;
        }
    }

}

PM MAIL   Вверх
_Michael
Дата 22.8.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Только что посмотрел в JDK
public Date(int year,
                       int month,
                       int date,
                       int hrs,
                       int min)
Parameters:
year - the year minus 1900.
month - the month between 0-11.
date - the day of the month between 1-31.
hrs - the hours between 0-23.
min - the minutes between 0-59.

Тоесть там надо не 2007 а 107 задавать.

Это сообщение отредактировал(а) _Michael - 22.8.2007, 10:49


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Entry_N3
  Дата 22.8.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как вычесть 24.08.07 14:33 день, т.е. получить 23.08.07 14:33, с учетом месяцев?
PM MAIL   Вверх
_Michael
Дата 22.8.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

    Calendar c = new GregorianCalendar();
    c.set(2007, 7, 24, 14, 33);
    c.add(Calendar.DATE, -1);



Это сообщение отредактировал(а) _Michael - 22.8.2007, 10:52


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

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


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Entry_N3
Пример, который я тебе привел (с календарем), работает с изменением старших полей.
PM MAIL   Вверх
_Michael
Дата 22.8.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Maksym, в твоем методе секунды также учитываются. smile Они могут повлиять на результат если ето существенно, поскольку 
Цитата

Программно узнать прошло больше суток или нет (с учетом часов и минут)? 

smile

Это сообщение отредактировал(а) _Michael - 22.8.2007, 11:24


--------------------
...не убивайся ни о чем - все временно,
хоть ночь темна но светлым днем беременна...

Саади
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

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


 




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


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

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