본문 바로가기
프로그래밍/안드로이드

안드로이드 디데이(dday) 계산 소스2

by -현's- 2012. 10. 31.
반응형

●DatecalActivity.java

 

 package your.pack;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class DatecalActivity extends Activity {
    /** Called when the activity is first created. */
 
 private TextView ddayText;
 private TextView todayText;
 private TextView resultText;
 private Button dateButton;
 
 private int tYear;           //오늘 연월일 변수
 private int tMonth;
 private int tDay;
 
 private int dYear=1;        //디데이 연월일 변수
 private int dMonth=1;
 private int dDay=1;
 
 
 private long d;
 private long t;
 private long r;
 
 private int resultNumber=0;
 
 static final int DATE_DIALOG_ID=0;
 
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        ddayText=(TextView)findViewById(R.id.dday);
        todayText=(TextView)findViewById(R.id.today);
        resultText=(TextView)findViewById(R.id.result);
        dateButton=(Button)findViewById(R.id.dateButton);
       
        dateButton.setOnClickListener(new OnClickListener() {
   
         
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    showDialog(0);//----------------
   }
  });
       
       
       
        Calendar calendar =Calendar.getInstance();              //현재 날짜 불러옴
        tYear = calendar.get(Calendar.YEAR);
        tMonth = calendar.get(Calendar.MONTH);
        tDay = calendar.get(Calendar.DAY_OF_MONTH);
       
        Calendar dCalendar =Calendar.getInstance();
        dCalendar.set(dYear,dMonth, dDay);
       
        t=calendar.getTimeInMillis();                 //오늘 날짜를 밀리타임으로 바꿈
        d=dCalendar.getTimeInMillis();              //디데이날짜를 밀리타임으로 바꿈
        r=(d-t)/(24*60*60*1000);                 //디데이 날짜에서 오늘 날짜를 뺀 값을 '일'단위로 바꿈
        
        resultNumber=(int)r+1;
        updateDisplay();       
       
    }//OnCreate end
   
    private void updateDisplay(){
     
     todayText.setText(String.format("%d년 %d월 %d일",tYear, tMonth+1,tDay));
     ddayText.setText(String.format("%d년 %d월 %d일",dYear, dMonth+1,dDay));
     
     if(resultNumber>=0){
     resultText.setText(String.format("D-%d", resultNumber));
     }
     else{
      int absR=Math.abs(resultNumber);
      resultText.setText(String.format("D+%d", absR));
     }
    }//디데이 날짜가 오늘날짜보다 뒤에오면 '-', 앞에오면 '+'를 붙인다
    
    private DatePickerDialog.OnDateSetListener dDateSetListener=new DatePickerDialog.OnDateSetListener() {
  
  @Override
  public void onDateSet(DatePicker view, int year, int monthOfYear,
    int dayOfMonth) {
   // TODO Auto-generated method stub
   dYear=year;
   dMonth=monthOfYear;
   dDay=dayOfMonth;
   final Calendar dCalendar =Calendar.getInstance();
         dCalendar.set(dYear,dMonth, dDay);
        
         d=dCalendar.getTimeInMillis();
         r=(d-t)/(24*60*60*1000);
        
         resultNumber=(int)r;
   updateDisplay();
  }
 };
 
 
    @Override
 protected Dialog onCreateDialog(int id){
  if(id==DATE_DIALOG_ID){
  return new DatePickerDialog(this,dDateSetListener,tYear,tMonth,tDay);

   }
  return null;
 }
    
 

}//DatecalActivity end

 

 

 

 

●결과

 

 

 

 

 

 

 

 

 

 

반응형

댓글