-1

私はアンドロイドに不慣れです。文字列型として日付列を持ち、この形式「dmyyyy」で日付を格納するデータベースのテーブルがあります。sqliteデータベースからこの形式で存在する日付を取得し、その値をDatePickerビューに更新する必要があります。どうすればこれを達成できますか、助けてください。

例:「1102012」(2012年11月1日)

前もって感謝します。

4

3 に答える 3

2

まず、そもそもなぜそれらをその形式の文字列として保存するのですか? 完全にあいまいな形式になっています。例で間違いを犯したと仮定すると、「1 月 11 日」と「11 月 1 日」の違いはどのようにわかりますか? どちらも「111」の後に年が続きます。

私が理解しているように、SQLite は通常、日付と時刻の ISO-8601 表現を使用します。これは、日付/時刻関数が使用するものであり、クライアント ライブラリが公開することを期待するものです。

とにかく、解析に関しては、サードパーティの日付/時刻 API であり、ビルトインおよびクラスよりもはるかに優れているJoda Timeを使用する、または を使用できます。明示的に指定することをお勧めします(理想的には、ユーザーのロケールではなくのようなものです。これは単なる保存用です) タイム ゾーン (ここでも、ほぼ確実にユーザーのタイム ゾーンではなく UTC を使用する必要があります) とパターン (たとえば、ISO-8601 の場合) )。次に、 を使用して... を取得し、より有用な情報を取得するために、同じタイム ゾーンの に設定することをお勧めします。DateCalendarSimpleDateFormatLocaleLocale.USyyyy-MM-ddparseDateCalendar

于 2012-11-09T13:22:30.377 に答える
0

このようにしてみてください

String dateStr = "5/31/2011";
DateFormat df = new SimpleDateFormat("M/dd/yyyy");
Date date = df.parse(dateStr);
于 2012-11-09T13:26:32.980 に答える
-1

日付はDDMMYYYYの形式である必要があります。DMYYYYの形式は解析できません。次のメソッドをクラスに追加します。

private int getDay(String s) {
    return Integer.valueOf(s.substring(0, 2));
}

private int getMonth(String s) {
    return Integer.valueOf(s.substring(2, 4));
}

private int getYear(String s) {
    return Integer.valueOf(s.substring(4));
}

次に、DatePickerを次のように設定します。

String dateString = "01112012";
DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker);
datePicker.updateDate(getYear(dateString), getMonth(dateString), getDay(dateString));
于 2012-11-09T13:46:03.903 に答える