1

dbに保存する日、月、年の値を取得したいのですが。これらは私のコードです:

宣言:

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の値をdbに保存しようとしています。最高の店舗タイプは何ですか?整数または文字列として??

4

3 に答える 3

0

私はしばらくの間この問題に苦労しました。私はこれより良いものは何も知りません。

日付を単一のlongintとしてDBに格納しました。日付をエポック(1970年1月1日)からの秒数に変換するのは非常に簡単です。また、秒数をDateオブジェクトに変換するのも簡単です。

秒とミリ秒に注意する必要があります。

date = new Date(seconds * 1000); //秒を日付に変換

秒=date.getTime()/ 1000; //これはエポックの開始からの秒単位の日付です

// Gregカレンダーを使用して、日、月、年からDateオブジェクトを取得します

日付dateOfGames=new GregorianCalendar(year、month、day).getTime();

それはまったく役に立ちますか?

于 2012-07-25T18:01:04.920 に答える
0

日付を表す1つの番号をDBに保存します。これは、近世の始まり(1970年1月1日)から経過した秒数です。日付ピッカーから、次のような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に入れる前に、次のように秒数に変換します。

長い秒=date.getTime()/ 1000; //これはエポックの開始からの秒単位の日付です

...。

DBからその1秒数を取り出し、それを再びDateオブジェクトにしたい場合は、次のようにします。

date = new Date(seconds * 1000); //秒をDateオブジェクトに変換します

DateFormatオブジェクトを使用して、日付オブジェクトをどのように表示するかを表示できます。

私はこれが厄介であることを知っています。SQLiteでは日付を保存できないため、答えは厄介になります。おそらくこれよりもクリーンな方法があり、他の人は何かをお勧めします。:)

于 2012-07-26T17:45:18.543 に答える
0

私はこのSQL文字列でsqlliteテーブルを作成しました:

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();       
}
于 2012-08-02T11:54:10.920 に答える