2012-07-25 182 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();  
} 
相关问题