如何从DatePickerDialog获取日,月和年?

时间:2012-07-25 15:57:20

标签: android datepickerdialog

我想获取保存到db的日,月和年值。这些是我的代码:

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

        }
    };
}

我尝试在db中存储mMonth,mYear和mDay值。什么是最好的商店类型?整数或字符串??

3 个答案:

答案 0 :(得分:0)

我在这个问题上挣扎了一段时间。我不知道比这更好的事情。

我将数据库中的日期存储为单个long int。将日期转换为自纪元(1970年1月1日)以来的秒数非常容易,并且很容易将秒数转换为Date对象。

你需要注意秒和毫秒。

日期=新日期(秒* 1000); //将秒转换为日期

seconds = date.getTime()/ 1000; //这是自纪元开始以来的秒数

//使用Greg日历从日,月,年

获取Date对象

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

这有帮助吗?

答案 1 :(得分:0)

我在DB中存储一个代表日期的数字。它是自现代时代开始(1970年1月1日)以来经过的秒数。从日期选择器中,您可以获得这样的M D Y值:

        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

        }
    };

在我把它放入数据库之前,我把它变成了几秒钟,如下所示:

long seconds = date.getTime()/ 1000; //这是自纪元开始以来的秒数

...

当我从数据库中取出单个秒数,并希望它再次成为Date对象时,我这样做:

日期=新日期(秒* 1000); //将秒转换为Date对象

您可以使用DateFormat对象以日期对象的形式显示它。

我知道这很尴尬。由于SQLite不允许您存储日期,因此答案会很尴尬。也许有比这更清洁的方式,其他人会推荐一些东西。 :)

答案 2 :(得分:0)

我用这个sql字符串创建sqlite表:

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