7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
1

Что случилось с датой?

27.10.2014, 13:53. Показов 975. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть функция:
Java
1
2
3
4
5
6
7
8
public long getCVMillis() {
    Calendar calendar = new GregorianCalendar(Locale.getDefault());
    calendar.set(Calendar.HOUR_OF_DAY, calendar.getMinimum(Calendar.HOUR_OF_DAY));
    calendar.set(Calendar.MINUTE, calendar.getMinimum(Calendar.MINUTE));
    calendar.set(Calendar.SECOND, calendar.getMinimum(Calendar.SECOND));
    
    return calendar.getTimeInMillis();
}
тут явно обнуляется часы, минуты, секунды.
Запускаю сегодня (‎27.‎10‎.‎2014) почему она возвращает 1414346400790 - это ‎26‎.‎10‎.‎2014‎ ‎23‎:‎00‎:‎00

предыдущий день и 23 часа что за бардак???????????????

Добавлено через 1 минуту
Господа, помогите вычислить корректно текущую дату с обнулением времени...
Срочно нужна помощь...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2014, 13:53
Ответы с готовыми решениями:

А что случилось с Firebase Crashlytics ?
Доброго вечера. В одно из приложений добавлен сабж, все работало, отчеты летели. Недавно заметил,...

Что-то случилось с Android Studio
что то слетело видимо. sdk? библиотеки? нужно восстановить с минимальным скачиванием с инета, ибо...

Android Studio, что случилось с эмулятором?
Или это не ошибка? Может пересесть на Genymotion?

Что-то случилось (подлагивает игра, с температурой процессора происходит что-то странное)
Всем привет. Сегодня утром включил компьютер, зашёл в игру (hoi4) и заметил что подлагивает , сразу...

17
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 16:43 2
Java
1
2
3
4
public static Calendar getCalendar(){
        TimeZone tz = TimeZone.getDefault();
        return Calendar.getInstance(tz);
    }
Java
1
2
3
4
5
public static int[] getCurrentTime() {
        final Calendar c = getCalendar();
        int[] res = new int[] {c.get(Calendar.YEAR),c.get(Calendar.MONTH)+1,c.get(Calendar.DAY_OF_MONTH),c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),c.get(Calendar.SECOND),c.get(Calendar.MILLISECOND)};
        return res;
    }
Вторая функция как пример.
0
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 16:59  [ТС] 3
Java
1
2
3
4
5
6
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));
c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));
c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));
c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));
функция запущена ‎27‎.‎10‎.‎2014‎ ‎18‎:‎57‎:‎16 и вернула 1414346400000 = ‎26‎.‎10‎.‎2014‎ ‎23‎:‎00‎:‎00 что некорректно...
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 17:02 4
А с какой целью вы используете getMinimum?
0
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 17:06  [ТС] 5
я хочу обнулить эти поля...
хорошо, пусть будет так:
Java
1
2
3
4
5
6
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
тот же результат: ‎26‎.‎10‎.‎2014‎ ‎23‎:‎00‎:‎00
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 17:12 6
Попробуйте установить все значения полей. Начиная с года месяца и т.д.
0
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 17:17  [ТС] 7
интересно как я это должен сделать? приведите пример...
в документации написано:

java.util.Calendar.getInstance()
Constructs a new instance of the Calendar subclass appropriate for the default Locale.

Returns:
a Calendar subclass instance set to the current date and time in the default Timezone.

значит вручную не надо прописывать текущий год, месяц и т.д.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 17:19 8
Может и не надо. Я просто предложил. У меня везде задается год, месяц, день и т.д., ну и собственно работает.
Например:
Java
1
2
3
4
5
6
7
8
9
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
c.set(Calendar.YEAR, 2014);
c.set(Calendar.MONTH, 10-1);
c.set(Calendar.DAY_OF_MONTH, 27);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
1
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 17:35  [ТС] 9
спасибо. это всё понятно. но мне надо из инициализированного объекта
если вручную прописывать то откуда брать текущие год месяц и тд

Добавлено через 3 минуты
и ваш код вернул 26‎.‎10‎.‎2014‎ ‎23‎:‎00‎:‎00

Добавлено через 8 минут
странно что если вывести как:

Log.d("000", String.valueOf(c.getTime()));

то вернёт:
Mon Oct 27 00:00:00 GMT+05:00 2014

но в планшете прописано GMT+06:00

что-то с часовым поясом не так....
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.10.2014, 18:04 10
А не думали что это повлиял перевод времени на час назад? В андроиде то не обновилось ничего а на компе у вас время перевелось т.к. microsoft позаботились об этом. Вот и ошибка, телефон выдает верное время, но без учета перевода времени, а логкат опять же выдает верное время, но уже с учетом перевода. Как то так)
1
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 18:44  [ТС] 11
думал об этом...
но как решить данный вопрос так и не придумаю пока...
+1 час делать - не знаю - корректно ли это будет с точки зрения кодинга... а вдруг гугл пофиксит и придётся опять обновлять -1...

что делать то, господа?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
27.10.2014, 18:50 12
Лучший ответ Сообщение было отмечено DevExp как решение

Решение

Оставить как есть. Или проверять строку на нули и если нужно добавлять час.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 18:53 13
Чото вы не то говорите. На устройстве все будет работать как надо. Ведь там свое время. При чем тут ваш час??? Или я недокурил чего то?
0
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
27.10.2014, 19:01  [ТС] 14
да действительно на устройстве всё работает как надо...
Spelcrawler, правильно подметил про винду и разницу в 1 час
дело в том, что android-клиент передаёт дату на windows-сервер и уже тут нарисовалась эта разница во времени...
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
27.10.2014, 19:07 15
Значит вам надо и на сервере учитывать временную зону и корректировать
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
28.10.2014, 04:35 16
Цитата Сообщение от dubok79 Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
TimeZone tz = TimeZone.getDefault();
Calendar c = Calendar.getInstance(tz);
c.set(Calendar.YEAR, 2014);
c.set(Calendar.MONTH, 10-1);
c.set(Calendar.DAY_OF_MONTH, 27);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Вчера столкнулся с подобной проблемой, а здесь вижу "решение".
Вдруг обнаружил что при установке даты в календарь месяц не правильно ставится! На единицу сдвинут! Пока не критично - у меня месяц задается прямо в коде цифрой. Но пришлось так-же прописывать c.set(Calendar.MONTH, 10-1);
Почему так? Откуда этот глюк? Или месяц ВСЕГДА начинается с 0?
0
7 / 7 / 2
Регистрация: 27.05.2013
Сообщений: 59
28.10.2014, 06:31  [ТС] 17
всегда
1
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
28.10.2014, 14:57 18
Tester64, если точно известен месяц, можно написать так: Calendar.JANUARY. Он равен 0, но зато это более наглядно.
1
28.10.2014, 14:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2014, 14:57
Помогаю со студенческими работами здесь

Что случилось и что вышло из строя?
Доброго времени суток. Играл в игру, игра повисла вместе с продолжающимся звуком. Перезагрузил пк....

Что случилось?
Microsoft Visual C++ 2010 Express Переустановил все что можно все равно даже если написать легкую...

Что случилось с ОП?!
Дело вот в чём. Купил новую мать. и ОП, мать Gigabyte Z77-d3. Оперативная память XMS Corsair 2...

Что-то случилось ..
Сегодня в 7 утра из топа вылетел один ключ ВЧ. По другим позициям подвижки +-1-2 По остальным...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru