Страница 1 из 1

DatePicker, получить дату

Добавлено: 01 апр 2013, 05:16
DeMoZ

Код: Выделить всё

textview.setText(String.valueOf(datepicer.getDayOfMonth())+"."+String.valueOf(datepicer.getMonth())+"."+String.valueOf(datepicer.getYear()));
я поискал, но не нашел встроенного метода, чтобы подобный вывод сделать одним запросом, а не тремя.

и еще, если я собираюсь в дальнейшем хранить дату в SQL и делать сортировку, то дату мне лучше хранить в каком формате- число типа 1212343452345 , или строка типа 10.03.2013, или есть специальный формат даты?
как дату в нужном формате взять из DatePicker?

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 05:45
neoksi
DeMoZ
Дату лучше всего хранить в формате unix timestamp.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 07:09
Foenix
Сортировка получится нормально, если дату хранить в формате ГГГГММДД - так будет удобочитаемо, если что.
Для формирования можно использовать объект Calendar и DateFormat-ы всякие..

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 07:16
neoksi
Olivka
Зачем изобретать велосипед?

Unix TimeStamp дефакто стал стандартом для отрасли, честно, лучше сразу приучаться к его использованию, чтоб потом голову не ломать.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 07:23
Foenix
Вообще-то никакой это не велосипед, просто осмысленное задание даты, очень удобное и человеку и машине. Во многих системах БД это принятое, скажем так, по-умолчанию понимаемый формат даты. Например, задавай это sqlserver-у или еще какой-нибудь субд - почти любая система схавает дату в таком формате, правильно ее интерпретирует и не поперхнется вне зависимости от региональных настроек.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 07:36
neoksi
Это да, когда у тебя данные существуют в одной среде, но когда сред много, лучше единый стандарт, тогда меньше преобразований и меньше вариантов для ошибок.

П.С. Я работаю с датами платно уже второй год в своем сервисе, и честно, нахлебался много. И скажу честно, unix timestamp самое универсальное решение и переносимое на большинство платформ.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 07:43
Foenix
извини, но в простой программе человеку не нужно порой супер-универсальное-решение, если человек пишет какой-нибудь счетчик калорий для маркета.
Нормальное решение, когда тебе не нужно время, например, и для того, чтобы глянув в данные понять в чем дело.
Я и в sqlite так дату передаю - все устраивает.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 08:09
rezak90
Сортировка получится нормально, если дату хранить в формате ГГГГММДД - так будет удобочитаемо, если что.
ага, и например сохранил я с Китая дату в таком виде, потом отправил её в таком виде скажем кому то/куда то в Германию, но часовой пояс не учитывается, так что конечно лучше хранить в unix timestamp.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 08:19
DeMoZ
ребят, а как этот формат даты ( unix timestamp) получить с DatePicker ?

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 10:13
Mikhail_dev
DatePicker изменяет целочисленные переменные. Вот как у меня сделано с DatePicker и TimePicker

Код: Выделить всё

    OnDateSetListener myCallBackDate = new OnDateSetListener() {


	public void onDateSet(DatePicker view, int year, int monthOfYear,
          int dayOfMonth) {
        NewCheckpointActivity.this.year = year;
        NewCheckpointActivity.this.monthOfYear = monthOfYear;
        NewCheckpointActivity.this.dayOfMonth = dayOfMonth;
        btnCalculateDate.setText(dayOfMonth+":"+monthOfYear+":"+year);
       
        cal = Calendar.getInstance();
        cal.set(Calendar.MINUTE, NewCheckpointActivity.this.minute);
        cal.set(Calendar.HOUR_OF_DAY, NewCheckpointActivity.this.hourOfDay);        
        cal.set(Calendar.DAY_OF_MONTH, NewCheckpointActivity.this.dayOfMonth);
        cal.set(Calendar.MONTH, NewCheckpointActivity.this.monthOfYear);
        cal.set(Calendar.YEAR, NewCheckpointActivity.this.year);
        
        totalTime = cal.getTimeInMillis();
      }
Вкратце: есть 5 переменных для этого дела, это год, месяц, день, час, минута. Они меняются в пикерах. У меня есть их глобальные переменные в классе (NewCheckpointActivity.this.monthOfYear и т.д.). Я беру объект Calendar, скармливаю как в примере эти переменные и вызываю метод

Код: Выделить всё

Calendar.getTimeInMillis();

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 10:28
rezak90
что ж так тяжко то)) вот одна строчка:

Код: Выделить всё

datePicker.getCalendarView().getDate()
получили лонг, дальше все карты открыты =)

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 12:15
Mikhail_dev
Никогда бы не догадался в getCalendarView искать время в миллисекундах. Порой некоторые методы добивают своей неочевидностью.

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 12:34
neoksi
Спрашивается на что тогда нам сдк :)

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 12:55
rezak90
просто нужно думать как Андроид =)

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 13:56
DeMoZ
datePicker.getCalendarView().getDate()
Call requires API level 12 (current min is 8): android.widget.DatePicker#getCalendarView
что это значит?

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 14:01
ohotNik
тыц

вы установили разработку под версию андроида 2,2 и выше, а метод будет работать только с 3,1 и выше

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 14:04
DeMoZ
вот у меня и крашится на 2.3.3 эмуляторе, непорядок.
тоесть, для 2.3.3 подобного быстрого метода нет?

Re: DatePicker, получить дату

Добавлено: 01 апр 2013, 21:44
Mikhail_dev
Я дал пример, который не зависит от API Level.
Скорость работы тут не важна, ты не будешь его вызывать по 100 раз в секунду. Да и если на то пошло, то он работает вполне быстро.

Re: DatePicker, получить дату

Добавлено: 02 апр 2013, 11:36
DeMoZ
no-- писал(а):Я дал пример, который не зависит от API Level.
Скорость работы тут не важна, ты не будешь его вызывать по 100 раз в секунду. Да и если на то пошло, то он работает вполне быстро.
твоя пример я абсолютно не понял, поэтому пользоваться не буду.
буду решать вопрос по своему.