Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
SAVA93
1 / 1 / 0
Регистрация: 24.12.2011
Сообщений: 86
1

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

29.08.2013, 01:03. Просмотров 761. Ответов 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 неделям и так далее вообщем все переменные по максимуму
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.08.2013, 01:03
Ответы с готовыми решениями:

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

Количество дней между двумя датами
под спойлером метод определения: int d0 = new int {2013,2,17,0,0,0}; int...

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

Найти разницу между датами
Имеется 2 даты. Первая &quot;дата изготовления&quot;, вторая &quot;годен до&quot;. К примеру...

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

5
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 01:34 2
ну, все правильно, 30 дней они же 4 недели и так далее.
0
SAVA93
1 / 1 / 0
Регистрация: 24.12.2011
Сообщений: 86
29.08.2013, 13:13  [ТС] 3
V0v1k, так если разница несколько секунд он все равно мне показывает что несколько дней, недель, часов, минут
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 13:38 4
подебагайте, может дату парсите неправильно, попробуйте SimpleDateFormat
1
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));
и чтобы получилось правильно приходить отнимать ее ( а это как то ненормально чтоли) подскажите в чем прикол)
0
V0v1k
1160 / 984 / 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.
1
29.08.2013, 15:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2013, 15:26

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

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

Найти разницу между датами в годах
Задание Написать программу с участием типа DateTime, TimeSpan. Ввести 2 даты...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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