【发布时间】:2014-03-18 08:59:02
【问题描述】:
我希望能够动态获取我想在 sql 字符串的 where 子句中使用的日期。
这是我的尝试。
GregorianCalendar c1= new GregorianCalendar();
GregorianCalendar c= new GregorianCalendar();
// get date a year ago
c1.add(Calendar.MONTH,-11);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("sdate", s);
Log.e("edate", e);
这会将开始日期打印为 2010-02-18 和结束日期 2014-03-18。
而且不一致!...再试一次,我得到了 2008-10-18!
怎样才能把它拉下来? 这是日期格式。
SimpleDateFormat fm =new SimpleDateFormat("yyyy-MM-dd");
我可以补充的是,我正在使用微调器。
这里是微调器选项的数组
String[] periods= {"This month","Two Months","Three Months","Six Months","Year","All"};
spinner = (Spinner) findViewById(R.id.payments);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,periods);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
spinner.setOnItemSelectedListener(this);
所以在我添加的 on itemselected 监听器中。
public void onItemSelected(AdapterView<?> arg0, View arg1, int pos,
long arg3) {
// TODO Auto-generated method stub
if(periods[pos]=="This month")
{
// get data within one month
c1.add(Calendar.MONTH,-1);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("sdate", s);
Log.e("edate", e);
rentalpayments= new RentalPaymentsAdapter(this,s,e);
list.setAdapter(rentalpayments);
}else if(periods[pos]=="Two Months")
{
// get data within one month
c1.add(Calendar.MONTH,-1);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("sdate", s);
Log.e("edate", e);
rentalpayments= new RentalPaymentsAdapter(this,s,e);
list.setAdapter(rentalpayments);
}else if(periods[pos]=="Three Months")
{
// get data within one month
c1.add(Calendar.MONTH,-2);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("sdate", s);
Log.e("edate", e);
rentalpayments= new RentalPaymentsAdapter(this,s,e);
list.setAdapter(rentalpayments);
}
else if(periods[pos]=="Six Months")
{
// get data within one month
c1.add(Calendar.MONTH,-5);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("sdate", s);
Log.e("edate", e);
rentalpayments= new RentalPaymentsAdapter(this,s,e);
list.setAdapter(rentalpayments);
}
else if(periods[pos].equals("Year"))
{
// get data within one month
String test=periods[pos];
c1.add((GregorianCalendar.MONTH),-11);
Date myStartDate =c1.getTime();
Date myendDate = c.getTime();
String s = fm.format(myStartDate);
String e = fm.format(myendDate);
Log.e("test", test);
Log.e("sdate", s);
Log.e("edate", e);
rentalpayments= new RentalPaymentsAdapter(this,s,e);
list.setAdapter(rentalpayments);
}
RentalPaymentAdapter 是一个接受开始日期和结束日期作为参数的基本适配器
rentalpayments= new RentalPaymentsAdapter(this,s,e);
有什么线索吗?
【问题讨论】:
-
什么是
fm?我敢打赌它是SimpleDateFormat并且格式字符串是错误的。这几个月你可能使用mm而不是MM。请注意,mm表示分钟,而不是几个月。 -
我使用 SimpleDateFormat fm =new SimpleDateFormat("yyyy-MM-dd");
-
代码没有问题。完美运行!
-
我想要的是获得正确的日期!...我在 where 子句中使用它。想要得到正确的结果