Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在“中获取日期”时返回当前日期的无效值;EEEE MMM d,yyyy“;格式_Java_Android_Date - Fatal编程技术网

Java 尝试在“中获取日期”时返回当前日期的无效值;EEEE MMM d,yyyy“;格式

Java 尝试在“中获取日期”时返回当前日期的无效值;EEEE MMM d,yyyy“;格式,java,android,date,Java,Android,Date,我想以这种格式显示当前日期2012年3月28日星期三,我编写了一个获取这种格式的方法,但它给出了无效的日期值(因为当我运行代码时,它给出了星期六SEP21933),这是为什么?我的代码中有什么错误 这是我的代码: public class AddExercise extends Activity { private Date exercise_date; private TextView date_Txt; Calendar localCalendar = Ca

我想以这种格式显示当前日期2012年3月28日星期三,我编写了一个获取这种格式的方法,但它给出了无效的日期值(因为当我运行代码时,它给出了星期六SEP21933),这是为什么?我的代码中有什么错误

这是我的代码:

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

这主要是因为您使用的是弃用的
Date()
构造函数。 它需要以下参数: 年份-减去1900的年份。 月份-介于0-11之间的月份。 日期-1-31之间的月份。 但你已经度过了不正确的一年

你为什么不干脆这样做:

return new SimpleDateFormat("MMMM dd,yyyy").format(localCalendar.getTime())
或者更好

return new SimpleDateFormat("MMMM dd,yyyy").format(new Date()));
不要跳过所有的障碍?

看看这个:

new Date(day, month , yr);
现在查看以下文档:

即使参数的顺序正确,年份也会错,因为
Date
构造函数是基于1900的

不要使用不推荐使用的成员-他们不推荐使用是有充分理由的


理想情况下,使用在日期/时间处理方面更好的方法。否则,请使用
Calendar.getTime()
Calendar
中获取
Date
,而不是自己构建它。

构建
练习日期的参数是相反的。这是构造函数…
Date(int-year,int-month,int-day)
尽管正如ring-bearer所指出的,它已被弃用。但是没有理由不能使用它。尽管
Date
构造函数已被弃用,但这并不是“主要”原因。如果你看过OP的代码,你会发现他们的参数顺序错误。反对并不意味着它不起作用。同意-添加了更多细节。
public Date(int year,
    int month,
    int day)