1

mySQL から日付を取得すると、2013-06-05 の形式になりますが、datepicker ダイアログで表示しようとすると、1933 年が表示され、月と日も正しくありません...

変数Setdateは文字列になります"2013-06-05"

        public void onClick(View v) {
            // TODO Auto-generated method stub
            String Setdate = dateButton.getText().toString();
            SimpleDateFormat sfd = new SimpleDateFormat(Setdate);
            Calendar myCalendar = sfd.getCalendar();
            new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();
        }

これを修正する方法を知っている人はいますか?

ありがとう

4

3 に答える 3

2

のコンストラクターは、実際の日付文字列ではなく、パターン文字列SimpleDateFormatを受け取ります。パターン文字列は、日付文字列を解析するとき、または日付を文字列表現に変換するときに使用する形式を記述します。

代わりにこれを試してください:

String format = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(format);
String dateString = dateButton.getText().toString();
Date date = sdf.parse(dateString);
Calendar myCalendar = Calendar.getInstance();
myCalendar.setTime(date);
new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();

別の考え: 日付の保存方法を制御している場合は、エポック以降のミリ秒を表す long として保存することを検討してください。これは、とにかく Date および Calendar クラスが内部的に使用するものです。多くの場合、コードが簡単になります。たとえば、次のようになります。

long time = ...
Calendar myCalendar = Calendar.newInstance();
myCalendar.setTimeInMillis(time);
new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();
于 2013-07-28T04:45:20.680 に答える
0

このようなものを試すことができます

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date date=df.parse("2013-06-05");
    String text = df.format(date);
    System.out.println("The date is: " + text);
于 2013-07-28T05:02:17.670 に答える