私はアンドロイドに不慣れです。文字列型として日付列を持ち、この形式「dmyyyy」で日付を格納するデータベースのテーブルがあります。sqliteデータベースからこの形式で存在する日付を取得し、その値をDatePickerビューに更新する必要があります。どうすればこれを達成できますか、助けてください。
例:「1102012」(2012年11月1日)
前もって感謝します。
私はアンドロイドに不慣れです。文字列型として日付列を持ち、この形式「dmyyyy」で日付を格納するデータベースのテーブルがあります。sqliteデータベースからこの形式で存在する日付を取得し、その値をDatePickerビューに更新する必要があります。どうすればこれを達成できますか、助けてください。
例:「1102012」(2012年11月1日)
前もって感謝します。
まず、そもそもなぜそれらをその形式の文字列として保存するのですか? 完全にあいまいな形式になっています。例で間違いを犯したと仮定すると、「1 月 11 日」と「11 月 1 日」の違いはどのようにわかりますか? どちらも「111」の後に年が続きます。
私が理解しているように、SQLite は通常、日付と時刻の ISO-8601 表現を使用します。これは、日付/時刻関数が使用するものであり、クライアント ライブラリが公開することを期待するものです。
とにかく、解析に関しては、サードパーティの日付/時刻 API であり、ビルトインおよびクラスよりもはるかに優れているJoda Timeを使用するか、または を使用できます。明示的に指定することをお勧めします(理想的には、ユーザーのロケールではなくのようなものです。これは単なる保存用です) タイム ゾーン (ここでも、ほぼ確実にユーザーのタイム ゾーンではなく UTC を使用する必要があります) とパターン (たとえば、ISO-8601 の場合) )。次に、 を使用して... を取得し、より有用な情報を取得するために、同じタイム ゾーンの に設定することをお勧めします。Date
Calendar
SimpleDateFormat
Locale
Locale.US
yyyy-MM-dd
parse
Date
Calendar
このようにしてみてください
String dateStr = "5/31/2011";
DateFormat df = new SimpleDateFormat("M/dd/yyyy");
Date date = df.parse(dateStr);
日付は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));