2012-07-25 180 views
1

我想獲取保存到分貝的日,月和年值。這是我的代碼:如何從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; 

事件代碼:

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); 

     } 
    }; 
} 

我嘗試存儲在數據庫mMonth,mYear和MDAY值。什麼是最好的商店類型?作爲整數或字符串?

+1

那麼,什麼是有,請將dayOfMonth? – 2012-07-25 15:58:39

+1

你的意思是'星期一','星期二'... – 2012-07-25 15:59:04

+0

例如:今天是25(日),07(月),2012(年)。 我不能得到天數... – RedLEON 2012-07-25 16:06:11

回答

0

我在數據庫中存儲一個表示日期的數字。這是因爲現代時代的開始已經過去了(1月1日,1970年),從日期選取器的秒數,你可以得到這樣的MDY值:

 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對象。

   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 

     } 
    }; 

我把它在DB之前,我把它變成的秒這樣一個numebr:

長秒= date.getTime()/ 1000; //這是因爲時代

....開始在幾秒鐘之日起

,當我需要的秒單號出了DB的,並希望它再次成爲一個Date對象,我這樣做:

date = new Date(seconds * 1000); //將秒轉換爲Date對象

您可以使用DateFormat對象來顯示日期對象,您希望如何看到它。

我知道這很尷尬。由於SQLite不允許存儲日期,所以答案會很尷尬。也許有比這更清潔的方式,其他人會推薦一些東西。:)

0

我在這個問題上掙扎了一段時間。我不知道任何比這更好的東西。

我把數據庫中的日期存儲爲一個long int。將日期轉換爲自紀元(1970年1月1日)以來的秒數很容易,並且將秒數轉換爲Date對象也很容易。

你需要小心秒和毫秒。

date = new Date(seconds * 1000); //將秒轉換爲日期

seconds = date.getTime()/ 1000; //這是因爲時代的開始在幾秒鐘之日起

//使用格雷格日曆擺脫一天,一個月,一年Date對象

日期dateOfGames =新的GregorianCalendar(年,月,日) .getTime();

這有幫助嗎?

+0

年份:2012,月份:7,日期:25 ..如何將這些值存儲爲整數。作爲三個整數db字段或一個整數字段? – RedLEON 2012-07-25 19:43:38

+0

我只使用一個。然後當我將它從數據庫中取出時,將該數字重新創建爲日期。我想我用了很長時間,而不是整數。 – DrA 2012-07-26 00:20:05

+0

嗯。如何與longint分離以及如何從日期值加入。你能舉個例子嗎? – RedLEON 2012-07-26 12:26:40

0

我創建sqllite表這個SQL字符串:

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

我所著的一些方法,將日期:

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();  
} 
相關問題