Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
#1

Количество дней между двумя датами - Программирование Android

16.02.2013, 22:20. Просмотров 877. Ответов 6
Метки нет (Все метки)

под спойлером метод определения:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    int[] d0 = new int[] {2013,2,17,0,0,0};
    int[] d1 = new int[] {2013,2,17,23,59,59};
 
public static int getQuantDays(int[] d0, int[] d1){
    final Calendar c0 = getCalendar();
    final Calendar c1 = getCalendar();
 
    c0.set(d0[0], d0[1]-1, d0[2], d0[3], d0[4], d0[5]);
    c1.set(d1[0], d1[1]-1, d1[2], d1[3], d1[4], d1[5]);
        
        long ldate0 = c0.getTimeInMillis();                
        long ldate1 = c1.getTimeInMillis();        
        float hr0 = (float)ldate0/3600000;        
        float hr1 = (float)ldate1/3600000;        
        float days0 = (float)hr0/24;        
        float days1 = (float)hr1/24;           
 
        int dayDiff  = (int)FloatMath.floor(days1 - days0);    
        
        return res;
    }

результат 1 день. Так получается из-за округления. Как сделать, что бы не округлял? Спасибо.

PS
метод getCalendar
Кликните здесь для просмотра всего текста
Java
1
2
3
4
    public static Calendar getCalendar(){
        TimeZone tz = TimeZone.getDefault();
        return Calendar.getInstance(tz);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2013, 22:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество дней между двумя датами (Программирование Android):

Разница между двумя датами - Программирование Android
Вообщем проблема такая получаю 1 дату start = System.currentTimeMillis() через некоторое время получаю 2 дату finish =...

Не могу найти правильную разницу между датами - Программирование Android
Почему то показывает все время неправильные цифры... посылаю методу стринг с датой и временем и хочу найти разницу между текущим временем и...

ImageView - переключить между двумя катринками - Программирование Android
При запуске приложения появляется start.Когда я на него нажимаю он исчезает и вместо него должен появиться stop,но этого не происходит.. ...

Обмен сообщениями между двумя приложениями по сети - Программирование Android
Всем добрый день! Возникла необходимость в реализации самого простейшего мессенджера под платформу Android. Перекопал много инфы,...

Передача данных между двумя телефонами Android + Content Provider - Программирование Android
Добрый день. Подскажите, пожалуйста, есть телефон на нём установлена программа, в данной программе есть Content Provider. Можно ли по...

Количество дней между двумя датами - PHP
Как узнать количество дней между двумя датами?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.02.2013, 22:27 #2
зачем все эти расчеты и где res рассчитывается непонятно.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.02.2013, 22:29  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
зачем все эти расчеты и где res рассчитывается непонятно.
res это я ошибся, должно быть return dayDiff;

А что значить зачем эти расчеты? Как по другому определить? Научите
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.02.2013, 22:34 #4
мне показалось что вы в конце используете ldate0 и ldate1...
в общем проще сначала сделать ldate1 - ldate0 , и тогда уже делить нужно только 1 число а не оба, а округление естественно из-за приведения к инту.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.02.2013, 22:44  [ТС] #5
Цитата Сообщение от V0v1k Посмотреть сообщение
мне показалось что вы в конце используете ldate0 и ldate1...
в общем проще сначала сделать ldate1 - ldate0 , и тогда уже делить нужно только 1 число а не оба, а округление естественно из-за приведения к инту.
округление происходит раньше. К инту это для удобства т.к. floor возвращает целую часть, что мне собственно и требуется. Округляется вот тут: (float)ldate0/3600000;
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.02.2013, 22:46 #6
(float)ldate0/3600000f
(float)ldate0/3600000.0
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.02.2013, 22:58  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
(float)ldate0/3600000f
(float)ldate0/3600000.0
Волшебная буква f , кто бы мог подумать
СПАСИБО
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2013, 22:58
Привет! Вот еще темы с ответами:

Количество дней между двумя датами - Pascal
Даны две даты текущего года. Сосчитать количество дней между этими двумя датами. Даты задаются парами: номер дня, три буквы названия месяца.

Количество дней между двумя датами - C++
Хочу спросить кто знает как найти количество дней между двумя датами. ПРИМЕР input output 01.01.93 1 02.01.93 ...

Посчитать количество дней между двумя датами - Bash
Вот до чего додумалась, поправте пж Тоесть в первой части выражения получаю количество секунд от известной даты отсчета для первой...

Найти количество дней между двумя датами - Matlab
Помогите решить задачку в MATLAB, пожалуйста. Два ребенка родились в 2015. Нужно найти количество дней между датами их рождения. При этом...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.02.2013, 22:58
Ответ Создать тему
Опции темы

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