2012-07-25 2 views
1

db에 저장하기위한 일, 월, 년 값을 얻고 싶습니다. 다음은 내 코드입니다 :DatePickerDialog에서 일, 월, 연도를 얻는 방법?

Declaretions :

private TextView tv_purchase_date; 
private Button mPickDate; 
private int mYear; 
private int mMonth; 
private int mDay; 
OnClickListener listener_show_dlg = null; 
OnDateSetListener listener_mdate_display = null; 

이벤트 코드 :

내가 DB에 mMonth, mYear 및 MDAY 값을 저장하려고
listener_show_dlg = new OnClickListener() {     
     public void onClick(View v) { 
      Calendar cal=Calendar.getInstance(); 

      DatePickerDialog datePickDlg = new DatePickerDialog(
        ItemsAddActivity.this, 
        listener_mdate_display, 
        cal.get(Calendar.YEAR), 
        cal.get(Calendar.MONTH), 
        cal.get(Calendar.DAY_OF_MONTH) 
      ); 
      datePickDlg.show(); 
     }; 
    }; 


listener_mdate_display = new OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      mMonth = month; 
          mYear = year; 
          mDay = dayofMonth; 

      tv_purchase_date.setText(dayOfMonth + "/" + monthOfYear + "/" + year); 

     } 
    }; 
} 

. 가장 좋은 매장 유형은 무엇입니까? 정수 또는 문자열로 ??

+1

그래서 DAYOFMONTH, 거기에 그 내용은 다음과 같습니다

create table items (id INTEGER PRIMARY KEY AUTOINCREMENT, pdate DATE) 

내가 날짜를 변환하는 몇 가지 방법을 writed? –

+1

'월요일', '화요일'을 의미합니까 ... –

+0

예를 들면 오늘은 25 일 (day), 07 (month), 2012 (year)입니다. 나는 일 수를 얻지 않는다 ... – RedLEON

답변

0

나는 DB에 날짜를 나타내는 하나의 숫자를 저장합니다. 그것은 당신이 같은 MDY 값을 얻을 수 날짜 선택에서 (1 월 1 일 1970 년) 현대 시대의 시작 이후 경과 한 시간 (초)입니다 :

 datePickerListener = new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int yearOfYear, 
       int monthOfYear, int dayOfMonth) { 
      // the user has picked these values 
      year = yearOfYear; 
      month = monthOfYear; 
      day = dayOfMonth; 

을 그럼, 이러한 변신 이런 단일 Date 객체. 제가 DB에 넣어 전에

   Calendar cal = new GregorianCalendar(year, month, day); 
      Date dateOfGames = cal.getTime(); 
      DateFormat df = DateFormat.getDateInstance(DateFormat.LONG); 
      String cs = df.format(dateOfGames); 
      changeDateButton.setText(cs); // update the interface 

     } 
    }; 

, 나는이 같은 초 numebr으로 바꿀 :

긴 초 = date.getTime()/1000; //이이 시대

....의 시작부터 초 날짜는

나는 DB에서 초 그 하나의 숫자를 가지고 가고, 다시 Date 객체를가되고 싶어요, I 이것을하십시오 :

날짜 = 새로운 날짜 (초 * 1000); // 초를 Date 객체로 변환

DateFormat 객체를 사용하여 날짜 객체를 표시 방법을 표시 할 수 있습니다.

나는 이것이 어색하다는 것을 알고있다. SQLite는 Date를 저장할 수 없으므로 답은 어색 할 것입니다. 아마도 이것보다 더 깨끗한 방법이있을 것이며, 다른 사람들은 뭔가를 추천 할 것입니다.:)

0

저는 한동안이 문제로 고생했습니다. 나는 이것보다 나은 것을 전혀 모른다.

DB에 날짜를 하나의 long int로 저장했습니다. 1970 년 1 월 1 일 이후의 초 수로 날짜를 변환하는 것은 매우 쉽고 초를 Date 객체로 변환하기도 쉽습니다.

초와 밀리 초를 조심해야합니다.

날짜 = 새 날짜 (초 * 1000); // 초를 날짜로 변환

초 = date.getTime()/1000; //이이 시대의 시작부터 초 날짜가

// 사용 그렉 일정 년, 월, 일의 Date 객체를 얻기 위해

날짜 dateOfGames = 새로운 GregorianCalendar를 (년, 월, 일) .getTime();

도움이 될까요?

+0

년 : 2012 년 7 월, 일 : 25 .. 이러한 값을 정수로 저장하는 방법. 3 개의 Integer DB 필드 또는 하나의 Integer 필드 ??? – RedLEON

+0

하나만 사용합니다. 그런 다음 DB에서 가져온 날짜로 해당 숫자를 다시 만듭니다. 나는 int가 아닌 long을 사용했다고 생각합니다. – DrA

+0

흠. longint에서 분리하는 방법과 날짜 값에서 결합하는 방법. 예를 들어 주시겠습니까? – RedLEON

0

나는이 SQL 문자열로 sqllite 테이블을 생성 :

public String date_to_str(Date date) {  
    String pattern = "dd.MM.yyyy"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); 
    Log.d(_watcher_name, "date_to_str" + dateFormat.format(date)); 
    return dateFormat.format(date);  
} 

public Date mdy_to_date (int day, int month, int year) { 
    Calendar cal = new GregorianCalendar(year, month, day); 
    return cal.getTime();  
} 
관련 문제