【发布时间】:2018-04-29 10:57:36
【问题描述】:
我们使用下面的代码 sn-p 来获取提供的月份和年份的天数。对于 02 和 2011,它返回天数为 31(不是这种情况)。对于 02 和 2016,它返回天数为 29。
任何线索。
package Processes.BSAInvoiceInquiry.ExternalCall.PaymentStatusInquiry;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class PaymentStatusInquiryJavaCode {
protected int year = 0;
protected int month = 0;
protected int days = 0;
public void invoke() throws Exception {
PaymentStatusInquiryJavaCode a = new PaymentStatusInquiryJavaCode();
System.out.println("Year " + year);
System.out.println("Month " + month);
Calendar calObj = new GregorianCalendar();
calObj.set(Calendar.YEAR, year);
calObj.set(Calendar.MONTH, month - 1);
System.out.println("Month " + Calendar.MONTH);
int numDays = calObj.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("No of the days in the month is " + numDays);
days = numDays;
}
}
【问题讨论】:
-
对于 02 和 2011,它返回天数为 31(不是这种情况)。
-
您绝对应该查看 Java 8 的 java.time 包。坚如磐石的舒适不可变工具。
-
@DreamspacePresident 我们的工具仍然依赖于 java 1.7
-
没什么大问题@AbdulKader。
java.time已向后移植到 Java 6 和 7。获取 ThreeTen Backport,将其添加到您的项目中并开始使用现代 Java 日期和时间 API。享受!鉴于您在使用老式Calendar课程时遇到的麻烦,这将是一个很大的解脱。 -
@AbdulKader 我写了a new answer to the linked question。 “如果您只需要计算某个月的天数……”这一段适合您。请看一看。