我正在尝试计算自特定日期起经过的月份,但如果我将今天的日期与过去的年份不同,则该函数可以使我有一个月的差异(少于一个月),因此该函数可以正常工作。
说出所有日期,该功能运行良好,但以下情况除外:
如果今天是“ 2014-03-06”(YYYY,MM,DD),并且我将函数的日期处理为“
2006-03-06”,则结果要短一个月,但是如果明天使用相同的日期,结果很好。我要去哪里错了。下面是代码:
public static int months(String d) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = null;
try {
d1 = f.parse(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Date d2 = (getCurrentDate());
Date d2 = getCurrentDate();
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
Calendar c2 = Calendar.getInstance();
c2.setTime(d2);
int diff = 0;
if (c2.after(c1)) {
while (c2.after(c1)) {
c1.add(Calendar.MONTH, 1);
if (c2.after(c1)) {
diff++;
}
}
} else if (c2.before(c1)) {
while (c2.before(c1)) {
c1.add(Calendar.MONTH, -1);
if (c1.before(c2)) {
diff--;
}
}
}
System.out.println(diff);
return diff;
}
请不要考虑函数的静态性质,出于测试目的,我已将此代码隔离在其他项目中。
这是c1和c2的值:
java.util.GregorianCalendar[time=1141583400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Kolkata",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2006,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=65,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0] and c2 is: java.util.GregorianCalendar[time=1394044200000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Kolkata",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2014,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=65,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0]
95
我这里不好的是getCurrentDate():
public static Date getCurrentDate() {
String DateStr = new SimpleDateFormat("yyyy-MM-dd"/*,
current*/).format(Calendar.getInstance().getTime());
// String DateStr = formattedDate;
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd"/*, current*/).parse(DateStr);
} catch (ParseException e) {
e.printStackTrace();
}
java.sql.Date dx = new java.sql.Date(date.getTime());
return dx;
}
问题内容: 如何在Java中动态显示for循环中特定月份的日期,月份和年份? 问题答案: 这简要演示了Java 和类的一些基础知识。根据您的问题,这是我能做的最好的事情。
问题 你的代码需要在当前月份中循环每一天,想找到一个计算这个日期范围的高效方法。 解决方案 在这样的日期上循环并需要事先构造一个包含所有日期的列表。 你可以先计算出开始日期和结束日期, 然后在你步进的时候使用 datetime.timedelta 对象递增这个日期变量即可。 下面是一个接受任意 datetime 对象并返回一个由当前月份开始日和下个月开始日组成的元组对象。 from datetim
问题内容: 我需要Java中本月的开始日期和结束日期。当JSP页面加载了当前月份时,它将自动计算该月份的开始和结束日期。它应该与年份和月份无关。也就是说某个月有31天或30天或28天。这也应该满足a年。你能帮我吗? 例如,如果我在列表框中选择“五月”,则需要开始日期为1,结束日期为31。 问题答案: 你去了: PS:类只是两个值的一对。
我有一个JSON对象,它有几个日期,例如:15/12/2005或14/12/2012。 我需要将月份和日期与今天的月份和日期进行比较;年份无关紧要。我正在这样做: 这会选择日期,但返回2000-12-15。我只想要日期和月份。 什么时候会比较下一个方法 虽然当前日期匹配,但测试不通过。
问题内容: 什么是最好的方式来知道某个日期是否与另一个日期在同一周(或一年或一个月),最好是带扩展名,并且 仅使用Swift ? 例如,在Objective-C中,我有 请不要提出桥接到的解决方案 问题答案: 您可以使用日历方法进行检查,如下所示: Xcode 11•Swift 5.1