我想获取保存到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值。什么是最好的商店类型?整数或字符串??
答案 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();
}