0

日付ピッカーのある登録フォームに取り組んでいます。ユーザーが日付を選択すると、TextView が更新され、選択した日付が (MM-dd-YYYY) の形式で表示されます。ユーザーが送信ボタンをクリックすると、フォーム データが mysql db に渡されます。(yyyy-MM-dd)の適切な形式ではないため、明らかに日付は挿入されません。SimpleDateFormat メソッドを使用してみましたが、動作しません。誰かが日付のフォーマット方法を理解するのを手伝ってくれますか?

datedob = (TextView) findViewById(R.id.reg_dob);

String dob = datedob.getText().toString();

私の日付ピッカーコード:

public void populateSetDate(int year, int month, int day) {
    datedob = (TextView)findViewById(R.id.reg_dob);
    datedob.setText(month + "-" + day + "-" + year);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar calendar = Calendar.getInstance();
        int yy = calendar.get(Calendar.YEAR);
        int mm = calendar.get(Calendar.MONTH);
        int dd = calendar.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, yy, mm, dd);
    }

    public void onDateSet(DatePicker view, int yy, int mm, int dd) {
        populateSetDate(yy, mm+1, dd);
    }

}
4

1 に答える 1

1

DateFormat次の 2 つのインスタンスが必要です。

  • から日付文字列を解析するためのものTextView
  • 1 つは、解析された日付を目的の表現にフォーマットするためのものです。

選択した日付のフォーマットされた表現がTextView含まれていると仮定すると、次のようになります。"MM-dd-yyyy"

String dobSource = datedob.getText().toString();
Date dobDate = new SimpleDateFormat("MM-dd-yyyy").parse(dobSource);
String dobTarget = new SimpleDateFormat("yyyy-MM-dd").format(dobDate);

ヒットするたびに更新されるまたは参照をTextView追跡することで、からの日付文字列の変換を回避できる可能性があります。そのインスタンスは、実質的に をサポートするデータ モデルになり、最終的にデータベースに挿入される値になります。DateCalendaronDateSet(...)TextView

そうは言っても、個人的には、日付を最も基本的な表現であるlong値として保存/保持することを好みます。このような値は通常、(解析を回避するため) 操作がより簡単で、さまざまなプラットフォーム間で一般的に互換性が高くなります。結局のところ、日付の保存は実際のデータに関するものでなければなりません。特定の表現/形式は、さらに先のことを複雑にするだけです。

于 2013-09-30T03:41:07.643 に答える