1

当我从 mySQL 获取日期时,其格式为 2013-06-05,但是当我尝试在日期选择器对话框中显示它时,我得到的是 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();

另一个想法:如果您可以控制日期的存储方式,也许可以考虑将它们存储为表示自 Epoch 以来的毫秒数的长整数,无论​​如何这都是 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 回答
1

要将字符串转换为日期,您可以使用 SimpleDateFormat 的解析函数。

String myFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
Date dateObj = sdf.parse(dateStr);
Calendar myCal = Calendar.getInstance();
myCal.setTime(dateObj);

要将日期存储在 DatePicker 对象中,您需要使用 Calendar.get() 函数提取月、日和年。然后使用 DatePicker.init() 设置日期并创建一个 OnDateChangedListener 以了解用户何时更改日期。

int month = myCal.get(Calendar.MONTH);
int day = myCal.get(Calendar.DATE);
int year = myCal.get(Calendar.YEAR);
mDp.init(year, month, day, new OnDateChangedListener() {
      public void onDateChanged(DatePicker view, int year,
         int monthOfYear, int dayOfMonth) {
          // To-Do (what ever I need to do when the date is changed).
         }
         });

从 DatePicker 对象中获取日期。

Date myDate = new Date(mDp.getYear() - 1900, mDp.getMonth(),
       mDp.getDayOfMonth());

将其转换回 ISO 格式的日期或为正确的区域设置格式。

String myFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
String dateAddedISO = sdf.format(myDate);
String dateAdded = DateFormat.getDateInstance().format(myDate);
于 2013-07-28T05:35:38.270 回答
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 回答