2013-07-07 3 views
0

Я пытаюсь установить обратный отсчет в приложении для Android на основе даты ввода пользователем.Как установить объект Time из EditText Android?

Таким образом, пользователь имеет выбор даты, которая устанавливает дату в объекте EditText, а затем, когда я нажимаю сохранить мне это нужно, чтобы принять значение из объекта EditText и запустить код ниже:

final EditText dateField = (EditText) findViewById(R.id.dateSentData); 
     String dateSent = dateField.getText().toString(); 
     Double date = Double.parseDouble(dateSent); 

     Time TimerSet = new Time(); 
     TimerSet.set(date); //day month year 
     TimerSet.normalize(true); 
     long millis = TimerSet.toMillis(true); 

     Time TimeNow = new Time(); 
     TimeNow.setToNow(); // set the date to Current Time 
     TimeNow.normalize(true); 
     long millis2 = TimeNow.toMillis(true); 

     long millisset = millis - millis2; //subtract current from future to set the time remaining 

     final int smillis = (int) (millis); //convert long to integer to display conversion results 
     final int smillis2 = (int) (millis2); 

new CountDownTimer(millisset, 1000) { 
      public void onTick(long millisUntilFinished) { 

       mText = (TextView)findViewById(R.id.weddingDateData); 

       // decompose difference into days, hours, minutes and seconds 
       int weeks = (int) ((millisUntilFinished/1000)/
         604800); 
       int days = (int) ((millisUntilFinished/1000)/86400); 
       int hours = (int) (((millisUntilFinished/1000) - (days 
         * 86400))/3600); 
       int minutes = (int) (((millisUntilFinished/1000) - ((days 
         * 86400) + (hours * 3600)))/60); 
       int seconds = (int) ((millisUntilFinished/1000) % 60); 
       int millicn = (int) (millisUntilFinished/1000); 

       mText.setText(" " +days); 
      } 
      public void onFinish() { 

      } 
     }.start(); 

код выше обыкновение работать, как это говорят, что на следующей строке не за исключением строки или Double только Long:

TimerSet.set(date); 

Может кто-то пожалуйста, помогите мне с этим?

Заранее спасибо

ответ

1

Привет вы можете установить дату и время изменения этого

TimerSet.set(date); 

с этим

//TimerSet.set(int second, int minute, int hour, int monthDay, int month, int year) This is the structure for method TimerSet 
TimerSet.set(0,25,24,12,7,2013); 

Так дата и время должны быть 12/07/2013 24:25:00

Но я думаю, что проблема связана с датой, когда я посылаю тост с TimerSet

Toast.makeText(MainActivity.this, "date: "+ TimerSet, Toast.LENGTH_LONG).show(); 

Это говорит о том, что дата я установить это 13/08/2013 24:25:00

Так что я сделал это, чтобы изменить эту

Time TimerSet = new Time(); 
TimerSet.set(0,25,24,12,7,2013); 

с этим (Обратите внимание, что я убывать месяц и день 1)

int year = 2013; 
int month = 7 - 1; 
int day = 12 - 1; 
int hour = 24; 
int minutes = 55; 
int seconds = 0; 

Time TimerSet = new Time(); 
//set(int second, int minute, int hour, int monthDay, int month, int year) 
TimerSet.set(seconds,minutes,hour,day,month,year); 

с этим он дает мне правильную дату 12/07/2013 24:25:00

Надежда это поможет вам или если у вас есть другое решение, пожалуйста, скажите мне, как решить другим способом.

С уважением

0

Метод Time.set ожидает, что длинное значение, которое представляет миллисекунды со времени epoch.

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

+0

Можете ли вы предоставить пример того, как это сделать, пожалуйста? – user723858

+0

Используйте 'SimpleDateFormat'. Например, если ваш формат день/месяц/год: 'Дата date = new SimpleDateFormat (" dd/MM/yyyy "). Parse (dateSent);' – Jong

Смежные вопросы