неверные значения для текущей даты возвращаются при попытке получить дату в формате "EEEE MMM d, yyyy" - PullRequest
0 голосов
/ 28 марта 2012

Я хочу отобразить текущую дату в этом формате. Среда, март 28,2012, я написал метод для получения этого формата, но он дает недопустимые значения даты (так как, когда я запускаю код, он выдает субботу 2,1933) почемув том, что ?что за ошибка в моем коде?

это мой код:

public class AddExercise extends Activity
 {   
   private Date   exercise_date;
   private TextView   date_Txt;
   Calendar localCalendar = Calendar.getInstance();
   public void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_exercise);

    int  year = localCalendar.get(Calendar.YEAR);
    int  month = localCalendar.get(Calendar.MONTH);
    int day = localCalendar.get(Calendar.DAY_OF_MONTH);
    exercise_date = new Date(day, month , yr);
    date_Txt=(TextView)findViewById(R.id.date);
    String  x=formatdate(exercise_date, "EEEE MMM d, yyyy");
    date_Txt.setText(x);
        }

        public static String formatdate(Date paramDate, String paramString)
  {
    String str;
    if (paramDate != null)
    {
      if (paramString == null)
        paramString = "MMMM dd, yyyy";
      str = new SimpleDateFormat(paramString).format(paramDate);
    }
    else
    {
      str = null;
    }
    return str;
  }     
     }

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Посмотрите на это:

new Date(day, month , yr);

Теперь посмотрим на документы для устаревшего Date конструктора :

public Date(int year,
    int month,
    int day)

Даже если бы вы получили аргументы в правильном порядке, год был бы неправильным, поскольку конструктор Date основан на 1900 году.

Не используйте устаревших членов - они не рекомендуются по уважительной причине.

В идеале используйте Joda Time , что намного лучше при обработке даты / времени. Но в противном случае используйте Calendar.getTime(), чтобы получить Date от Calendar, а не создавайте его самостоятельно.

1 голос
/ 28 марта 2012

Это в первую очередь потому, что вы используете устаревший Date() конструктор. Требуются следующие параметры: год - год минус 1900. месяц - месяц между 0-11. date - день месяца между 1-31 Но вы проходите неправильный год в целом

Почему бы вам просто не сделать это:

return new SimpleDateFormat("MMMM dd,yyyy").format(localCalendar.getTime())

или еще лучше

return new SimpleDateFormat("MMMM dd,yyyy").format(new Date()));

Вместо того, чтобы прыгать через все обручи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...