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

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

Войти
Регистрация
Восстановить пароль
 
SAVA93
1 / 1 / 0
Регистрация: 24.12.2011
Сообщений: 86
#1

Не могу найти правильную разницу между датами - Программирование Android

29.08.2013, 01:03. Просмотров 699. Ответов 5
Метки нет (Все метки)

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

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
private static String divideStringToGetTime(String data) {
        String hour = data.substring(9, 11);
        String minute = data.substring(11, 13);
        String seconds = data.substring(13, 15);
        String year = data.substring(0, 4);
        String month = data.substring(4, 6);
        String day = data.substring(6, 8);
 
        Calendar notificationDate = Calendar.getInstance();
        Calendar currentDate = Calendar.getInstance();
        notificationDate.set(Integer.parseInt(year), 
                Integer.parseInt(month), 
                Integer.parseInt(day), 
                Integer.parseInt(hour), 
                Integer.parseInt(minute),
                Integer.parseInt(seconds));
        
        long milis1 = currentDate.getTimeInMillis();
        long milis2 = notificationDate.getTimeInMillis();
        long diff = milis2 - milis1;
        
        long diffSeconds = TimeUnit.MILLISECONDS.toSeconds(diff);
        long diffMinutes = TimeUnit.MILLISECONDS.toMinutes(diff);
        long diffHours = TimeUnit.MILLISECONDS.toHours(diff);
        long diffDays = TimeUnit.MILLISECONDS.toDays(diff);
        
        if(diffDays == 0)
        {
            if(diffHours== 0)//few seconds ago
                if(diffMinutes == 0){
                    data = "A few seconds ago.";
                }
                else {// few minutes ago
                    data = diffMinutes +  " minutes ago.";
                }
        }
        else if(diffHours >0 && diffHours <24){
            data = diffHours + "hours "+diffHours%24 + "minutes ago.";
        }
        else if(diffDays == 1){
            data = "Yesterday at " + hour + ":" + minute;
        }
        else if(diffDays == 2){
            data = "2 days ago at" + hour + ":" + minute;
        }
        else if(diffDays == 3){
            data = "3 days ago at " + hour + ":" + minute;
        }
        else if(diffDays == 4){
            data = "4 days ago at " + hour + ":" + minute;
        }
        else if(diffDays == 5){
            data = "5 days ago at " + hour + ":" + minute;
        }
        else if(diffDays == 6){
            data = "6 days ago at " + hour + ":" + minute;
        }
        else if(diffDays == 7){
            data = "1 week ago at " + hour + ":" + minute;
        }
        else if(diffDays>7 && diffDays<28){
            data = (diffDays / 7) + " weeks ago at " + hour + ":" + minute;
        }
        else{
            data = day + "/" + month + "/" + year + " "+hour + ":" + minute;
        }
        return data;
    }

выдает неправильную разницу говорит что разница равна 30 дням 4 неделям и так далее вообщем все переменные по максимуму
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2013, 01:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу найти правильную разницу между датами (Программирование Android):

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

Количество дней между двумя датами - Программирование Android
под спойлером метод определения: int d0 = new int {2013,2,17,0,0,0}; int d1 = new int {2013,2,17,23,59,59}; public static...

Проясните разницу между CompatActivity, Support Library, SDK version и некоторыми другими параметрами - Программирование Android
Доброго дня. Путаюсь и не до конца понимаю смысл некоторых параметров проектов Android, типов классов, версий библиотек и других...

Найти разницу между датами - C++ Builder БД
Добрый день, подскажите, как найти разницу во времени между 2я датами tel / dat А / ...

Найти разницу между датами - C (СИ)
Помогите понять что не так. не всегда верно выводит количество часов входные данные- количество строк;...

Найти разницу между датами - C#
Имеется 2 даты. Первая &quot;дата изготовления&quot;, вторая &quot;годен до&quot;. К примеру &quot;20.05.15&quot; и &quot;26.05.15&quot;. Как вывести информацию о том, сколько...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 01:34 #2
ну, все правильно, 30 дней они же 4 недели и так далее.
SAVA93
1 / 1 / 0
Регистрация: 24.12.2011
Сообщений: 86
29.08.2013, 13:13  [ТС] #3
V0v1k, так если разница несколько секунд он все равно мне показывает что несколько дней, недель, часов, минут
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 13:38 #4
подебагайте, может дату парсите неправильно, попробуйте SimpleDateFormat
SAVA93
1 / 1 / 0
Регистрация: 24.12.2011
Сообщений: 86
29.08.2013, 13:54  [ТС] #5
V0v1k, спасибо ошибку нашел но она какая то невнятная... не могли бы вы объяснить аномалию %)
я до этого писал код в шапке там работает точно правильно эта часть
Java
1
String month = data.substring(4, 6);
а вот эта почему то прибавляет именно к месяцу единицу, то есть если сейчас август то он показывает сентябрь...
Java
1
2
3
4
5
6
7
8
Calendar notificationDate = Calendar.getInstance();
        Calendar currentDate = Calendar.getInstance();
        notificationDate.set(Integer.parseInt(year), 
                Integer.parseInt(month),// вот здесь почему то добавляет единицу. 
                Integer.parseInt(day), 
                Integer.parseInt(hour), 
                Integer.parseInt(minute),
                Integer.parseInt(seconds));
и чтобы получилось правильно приходить отнимать ее ( а это как то ненормально чтоли) подскажите в чем прикол)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 15:26 #6
смотрите документацию
The month value is 0-based, so it may be clearer to use a constant like JANUARY.
здесь месяцы отсчитываются с 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 15:26
Привет! Вот еще темы с ответами:

Найти разницу дней между датами - C++/CLI WinForms
Доброго времени суток, уважаемые форумчане! Начал изучать MS Visual Studio 2010 C++. Стоит такая задача. Надо найти разницу дней между...

Найти разницу между датами со временем - VBA
Здравствуйте! Я считываю поле из бд Access формата дата и время за определенный промежуток времени. Мне нужно находить разность дат между...

Определить разницу между датами - C#
Пожалуйста подскажите. В поле на форме вводится число в секундах (допустим, 15). При нажатии кнопки &quot;Старт&quot; программа должна взять текущее...

Как определить разницу между датами - MS Excel
Всем привет! Помогите с головоломкой! ;) В колонке А даты в формате 01.01.01 В колонке В дата с разницей в 6 месяцев (т.е. ) ...


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

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

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