Dis*_*era 2 java date simpledateformat
我正在尝试从给定的月份(从数据库中获取)将前12个月添加到arraylist中。
List<String> allDates = new ArrayList<String>();
sqlQuery="select max(date) from Table_Name";
maxDate="Jan-2016"; (Result from Query);
Run Code Online (Sandbox Code Playgroud)
要从maxDate获得之前的12个月,我在这里使用SimpleDateFormat。
我想从给定的月份(maxDate),而不是从当前月份计算前12个月,我尝试了以下代码。
// Parsing maxDate to an integer (say Jan-2016 = 0, Feb-2016= 1)
Date date = new SimpleDateFormat("MMM-yyyy").parse(maxDate);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month=cal.get(Calendar.MONTH);
System.out.println("month : "+month);
// Looping to get previous 12 months from current month.
SimpleDateFormat month_date = new SimpleDateFormat("MMM-yyyy");
for (int i = 12; i > 0; i--) {
Calendar calendar1 = Calendar.getInstance();
calendar1.add(Calendar.MONTH, -i);
String month_name1 = month_date.format(calendar1.getTime());
allDates.add(month_name1);
}
System.out.println(allDates);
Run Code Online (Sandbox Code Playgroud)
由于月份是从(0-11)开始编号,因此无法实现。请提出一个想法,计算给定月份的前12个月。感谢你的帮助!
问题在于,在循环中,您总是根据当前日期而不是根据计算基础maxDate。
List<String> allDates = new ArrayList<>();
String maxDate = "Jan-2016";
SimpleDateFormat monthDate = new SimpleDateFormat("MMM-yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(monthDate.parse(maxDate));
for (int i = 1; i <= 12; i++) {
String month_name1 = monthDate.format(cal.getTime());
allDates.add(month_name1);
cal.add(Calendar.MONTH, -1);
}
System.out.println(allDates);
Run Code Online (Sandbox Code Playgroud)
输出
[Jan-2016, Dec-2015, Nov-2015, Oct-2015, Sep-2015, Aug-2015, Jul-2015, Jun-2015, \
May-2015, Apr-2015, Mar-2015, Feb-2015]
Run Code Online (Sandbox Code Playgroud)
编辑简短说明代码段的作用。
Calendar从给定创建一个maxDate并将其分配给calMon-Year当前日期的字符串添加cal到列表中allDatescal.add(Calendar.MONTH, -1)如罗勒所述。如果你要处理的值allDates以后如Date / Calendar想不产生串之间的列表。
| 归档时间: |
|
| 查看次数: |
3002 次 |
| 最近记录: |