【问题标题】:How to format mySQL date to show in datepicker in android?如何格式化 mySQL 日期以在 android 的 datepicker 中显示?
【发布时间】:2013-07-28 04:33:48
【问题描述】:

当我从 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();
        }

有谁知道如何解决这个问题?

谢谢

【问题讨论】:

    标签: java android date format


    【解决方案1】:

    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 以来的毫秒数的 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();
    

    【讨论】:

      【解决方案2】:

      要将字符串转换为日期,您可以使用 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);
      

      【讨论】:

        【解决方案3】:

        你可以试试这样的

            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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-07
          • 1970-01-01
          • 1970-01-01
          • 2013-07-25
          • 1970-01-01
          • 2016-03-02
          • 2011-01-08
          • 1970-01-01
          相关资源
          最近更新 更多