我在试图在.setTime对象上使用CalendarView时遇到了问题,请参阅下面的代码。
package com.example.calendar_test;
import java.util.Calendar;
import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.text.format.DateFormat;
import android.text.format.Time;
import android.view.Menu;
import android.view.View;
import android.widget.CalendarView;
import android.widget.Toast;
import android.widget.CalendarView.OnDateChangeListener;
public class MainActivity extends Activity {
CalendarView cv;
@Override
protected void onCreate(Bundle savedInstanceState) {
long startDate;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cv = (CalendarView) this.findViewById(android.R.id.content).findViewById(R.id.calendarView1);
startDate = cv.getDate();
cv.setDate(cv.getDate());
final Context context = this;
cv.setOnDateChangeListener(new OnDateChangeListener(){
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
Date selDate = new Date();
selDate.setMonth(month);
selDate.setYear(year);
selDate.setDate(dayOfMonth);
selDate.setTime(selDate.getTime());
view.setDate(selDate.getTime());
Date d = new Date();
d.setMonth(2);
d.setYear(2014);
d.setDate(22);
d.setTime(d.getTime());
if(view.getDate() == d.getTime()){
Toast.makeText(context, "You hit the 22", Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}当我运行时,我会在选择日期时收到这条消息。02-17 15:50:30.501: E/MessageQueue-JNI(1098):java.lang.IllegalArgumentException:时间不介于1900年1月01日00:00:00时和1900年12月31日星期五
在view.setDate(selDate.getTime())上爆炸;
我不太明白为什么selDate.getTime()不是view.setDate()的有效长
有没有人?
发布于 2014-02-18 02:08:50
创建Date对象时,其year值为当前年份减去1900。这是计算自1970年1月1日00:00:00以来经过的毫秒数的有效值。当您从参数列表修改Date对象的Date值时,这些毫秒超出了范围,因为参数列表中的year只是当前年份(没有负1900)。
你应该换掉
selDate.setYear(year);和selDate.setYear(2014);
使用
selDate.setYear(year-1900);和selDate.setYear(114);
https://stackoverflow.com/questions/21839747
复制相似问题