학습용 실습이라 UI따위.......;;;;;;귀찮아서 기능 두개 한 화면에 재활용했습니다. ㅋㅋ

 

재활용이어도 기능 두개 다되니 연습해보세요.그냥 연습용으로 DatePicker를 사용해보았습니다.

 

XML부분입니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal">

   

<LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical">

     <TextView
         android:id="@+id/txtstart"        
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:gravity="center_horizontal"
         android:textSize="25dp"
         android:text="시작시간" />
    
      <DatePicker
         android:id="@+id/dpStart"
         android:scrollbarStyle="outsideOverlay"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content" />

 </LinearLayout>
 
 <LinearLayout
     android:gravity="center_horizontal"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical" >

     <TextView
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:gravity="center_horizontal"
         android:textSize="25dp"
         android:text="목표시간" />

     <DatePicker
         android:id="@+id/dpEnd"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />

     <EditText
      android:id="@+id/etInput"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:hint="시작시간으로부터 ~몇일 검색"
      android:inputType="number"
      android:ems="10" />
         
 </LinearLayout>
 
 <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal" >

 <Button
     android:id="@+id/btnSearch"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:hint="시작일부터 목표일후의 날짜"
     android:text="검색" />
    
 </LinearLayout>


 
 <TextView
     android:id="@+id/txtres"    
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:gravity="center_horizontal"
     android:textSize="22dp"
     android:text="결과창" />

</LinearLayout>

 

 

 

 

 

이부분은 java 소스부분입니다.

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;

public class DaySearchActivity extends Activity {
    /** Called when the activity is first created. */
 

 Button btnSearch;
 TextView txtRes;
 EditText etIn;
 DatePicker dpStart;
 DatePicker dpEnd;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btnSearch =(Button)findViewById(R.id.btnSearch);
       
        txtRes = (TextView)findViewById(R.id.txtres);
        etIn = (EditText)findViewById(R.id.etInput);
       
        dpStart = (DatePicker)findViewById(R.id.dpStart);
        dpEnd = (DatePicker)findViewById(R.id.dpEnd);
       
       
        btnSearch.setOnClickListener(new View.OnClickListener() {
   
   public void onClick(View v) {
    // TODO Auto-generated method stub
    
    txtRes.setText("");
//시작값    
    Calendar mCalendar = new GregorianCalendar(
      dpStart.getYear(),   //year
      dpStart.getMonth(),      //month
      dpStart.getDayOfMonth()  //Day
     );//end
    

//목표값
    Calendar mEndCalendar = new GregorianCalendar(
      dpEnd.getYear(),   //year
      dpEnd.getMonth(),      //month
      dpEnd.getDayOfMonth()  //Day
     );//end

//두개 기능을 한버튼에 하다보니 생긴 조건문    
    if(etIn.getText().toString().equals(""))
    {
         long diffday = mEndCalendar.getTimeInMillis() - mCalendar.getTimeInMillis() ;
         txtRes.setTextColor(Color.RED) ;
     
     if (diffday < 0) {//D+ 인지 D-인지 구별
          diffday = diffday * -1;    //부호 부꾸는건데 안하고도 표시 가능
          String res = Long.toString(diffday / (1000 * 60 * 60 * 24));

// 밀리세컨 형태이므로 1000초*60초(분)*60분(시간)*24시간(하루)로 나누어 1일로 환산한다
          txtRes.setText("D+"+res);
     }else{
      String res = Long.toString(diffday / (1000 * 60 * 60 * 24));

// 밀리세컨 형태이므로 1000초*60초(분)*60분(시간)*24시간(하루)로 나누어 1일로 환산한다
      txtRes.setText("D-"+res); 
     }
     
    }//if
    else
    {
     mCalendar.add(
       Calendar.DATE, // 기준점을 날짜로 하기때문에 Date 로함
       Integer.parseInt(etIn.getText().toString())// 입력값 정수로 볂환해서 파라미터에 넣는다.
     );//end

     
     SimpleDateFormat cusDate = new SimpleDateFormat("yyyy-MM-dd");// 표시한 포멧 형태
     txtRes.setTextColor(Color.GREEN) ;
     txtRes.setText(etIn.getText()+"일후 날짜 :"
         +cusDate.format(  mCalendar.getTime() )   );
     etIn.setText("");
    }//end else
    
    
   }//end view
  });//end OnClickListener
    }//end onCreate
}//end activity

 

 

[실행1]                                            [실행 2]

 

[실헹1] : DatePicker를 이용한 두 데이터간의 차이로 몇일 남았는지 혹은 몇일 경과했는지 알려줌

[실행2] : 입렵값을 통해 기준일로부터 입력날짜만큼 지난후의 년월일을 알려줌

 

'Android' 카테고리의 다른 글

[Android]안드로이드 라이프 사이클  (0) 2012.06.21
[Android]APIDemo 순서입니다.  (0) 2012.05.31
[Android]키보드 입력 종류  (0) 2012.05.29
[Android]형변환 종류  (0) 2012.05.29
[Android]Log 필터  (0) 2012.05.29