Java 需要关于在我的代码中设置日期的帮助吗

Java 需要关于在我的代码中设置日期的帮助吗,java,android,Java,Android,我希望能够动态地获取要在sql字符串的where子句中使用的日期 这是我的尝试 GregorianCalendar c1= new GregorianCalendar(); GregorianCalendar c= new GregorianCalendar(); // get date a year ago c1.add(Calendar.MONTH,-11); Date myStartDate =c1.getTime();

我希望能够动态地获取要在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);

有什么线索吗?

我想你需要把代码改成

c1.add((GregorianCalendar.MONTH), -11);
因为常量可能不同,而方法api是

public void add(int field,int amount)
也可以使用固定日期进行测试

//set date to last day of 2009
c1.set(Calendar.YEAR, 2009);
c1.set(Calendar.MONTH, 11); // 11 = december
c1.set(Calendar.DAY_OF_MONTH, 31);

下面的代码工作正常。如上述评论所述。看来你的格式不对

DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
        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);

        System.out.println(String.format("sdate: %s", s));
    System.out.println(String.format("edate: %s", e));

什么是
fm
?我打赌它是一个
SimpleDateFormat
,格式字符串是错误的。您可能在几个月内使用了
mm
而不是
mm
。请注意,
mm
表示分钟,而不是月;代码没有问题。工作完美!!我想要的是得到正确的日期!。。。我在where子句中使用它。要获得正确的结果,请更改为c1.add((gregoriacalendar.MONTH),-11)。得到同样的错误!你好我的格式正确。但我总是得到奇怪的结果。
//set date to last day of 2009
c1.set(Calendar.YEAR, 2009);
c1.set(Calendar.MONTH, 11); // 11 = december
c1.set(Calendar.DAY_OF_MONTH, 31);
DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
        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);

        System.out.println(String.format("sdate: %s", s));
    System.out.println(String.format("edate: %s", e));