Java 尝试在“中获取日期”时返回当前日期的无效值;EEEE MMM d,yyyy“;格式
我想以这种格式显示当前日期2012年3月28日星期三,我编写了一个获取这种格式的方法,但它给出了无效的日期值(因为当我运行代码时,它给出了星期六SEP21933),这是为什么?我的代码中有什么错误 这是我的代码: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
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)