Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/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中获取当前年度和上一年度的月份?_Java_Sql_Datetime - Fatal编程技术网

如何在java中获取当前年度和上一年度的月份?

如何在java中获取当前年度和上一年度的月份?,java,sql,datetime,Java,Sql,Datetime,我需要得到当前月份的编号,从现在到过去1年的月份编号才能生成报告 例如:如果今天是2月,那么从2014年2月到2013年3月,我需要生成 02 - 2014 01 - 2014 12 - 2013 11 - 2013 . . . 03 - 2013 我需要生成这个。有人能帮我吗?这里是一个使用第三方开源框架的示例。Joda Time是与java捆绑的过时的†java.util.Date&Calendar类的流行替代品 DateTime now = DateTime.now(); // Curr

我需要得到当前月份的编号,从现在到过去1年的月份编号才能生成报告

例如:如果今天是2月,那么从2014年2月到2013年3月,我需要生成

02 - 2014
01 - 2014
12 - 2013
11 - 2013
.
.
.
03 - 2013

我需要生成这个。有人能帮我吗?

这里是一个使用第三方开源框架的示例。Joda Time是与java捆绑的过时的†java.util.Date&Calendar类的流行替代品

DateTime now = DateTime.now(); // Current date-time using JVM's default time zone.
DateTime pastDate = null;
for ( int i = 0; i < 12; i++ ) {
    pastDate = now.minusMonths( i );
    String monthNumberAsString = String.format("%02d", pastDate.getMonthOfYear() ); // Pad leading zero if need be.
    System.out.println( monthNumberAsString + " - " + pastDate.getYear() );
}


†引入新类以取代旧的java.util.Date/Calendar类。这些新类的灵感来源于,并由定义。

您可能想看看calendar中的add方法,例如:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;


public class CalendarExample {

  public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("MM - yyyy");  
    Calendar calendar = new GregorianCalendar();
    System.out.println(sdf.format(calendar.getTime()));

    for (int i = 0; i < 11; i++) {
      calendar.add(Calendar.MONTH, -1);
      System.out.println(sdf.format(calendar.getTime()));
    }

  }
}

如果您想要正好1年前的日期,您可以使用:

 public static void main(String[] args){
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(df.format(getPastDate()));

}

public static Date getPastDate(){
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR)-1);
    calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+1);
    System.out.println(calendar.getTime());
    return calendar.getTime();
}
此代码将返回当月

像。。。使用方法d.getYear()获取当前年份

注:mon=“”+(d.getMonth()+1)+”;
在本文中,我添加了1个月,因为此方法返回0->1月,1->2月等等。

为什么标记为SQL?还有什么是你忘了提的,还是标签错了?另外,首先自己动手编码通常是一种很好的方式。
我需要生成这个
是什么阻止了你?您还没有问过任何问题。如果您打算使用非标准API(jodatime)进行回答,最好在回答中至少提到这一点。或许可以解释一下为什么要使用第三方API而不是标准API(提供完全相同的功能)。
02 - 2014
01 - 2014
12 - 2013
11 - 2013
10 - 2013
09 - 2013
08 - 2013
07 - 2013
06 - 2013
05 - 2013
04 - 2013
03 - 2013
 public static void main(String[] args){
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(df.format(getPastDate()));

}

public static Date getPastDate(){
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR)-1);
    calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+1);
    System.out.println(calendar.getTime());
    return calendar.getTime();
}
import java.util.*;
class dt
{
    Date d;
    String mon;         
    dt()
    {   d= new Date();
        mon = ""+(d.getMonth()+1)+"";
        System.out.println(" mon is "+);        
    }
    public static void main(String[]avi)
    {     new dt();   }
}