我需要确定六个月前的日期。例如:
Feb-27, 2012(Today) - It is Feb and we don't count incomplete month, false
Feb-01, 2012 - Still Feb so don't count too, false
Jan-01, 2011 - Completed, false
Dec-01, 2011 - Completed, false
Nov-01, 2011 - Completed, false
Oct-01, 2011 - Completed, false
Sep-01, 2011 - Completed, false
Aug-01, 2011 - Completed, false
Jul-01, 2011 - Already pass 6 complete months, true它应该在未来的任何日期起作用。
我想到了当前的日期减去30*6=180日,但这是不准确的。
它需要准确,因为,例如,如果我们确定2011年7月是有效的,那么我们将保留该月份的所有数据。
谢谢。
发布于 2012-02-27 06:41:59
如果您可以使用JodaTime,下面是计算±6个月的代码:
import org.joda.time.DateTime;
import org.joda.time.Months;
....
....
DateTime now = new DateTime();
DateTime then = new DateTime().withDate(2011, 8, 1);
if(Math.abs(Months.monthsBetween(now, then).getMonths()) > 6){
System.out.println("6 mo apart!");
//your logic goes here
}发布于 2012-02-27 06:38:39
我会尝试这个简单的逻辑来完成这项工作。
Calendar cal = Calendar.getInstance(); //Get current date/month i.e 27 Feb, 2012
cal.add(Calendar.MONTH, -6); //Go to date, 6 months ago 27 July, 2011
cal.set(Calendar.DAY_OF_MONTH, 1); //set date, to make it 1 July, 2011希望这能有所帮助。
发布于 2012-02-27 06:42:09
根据您的时间和日期需要使用像尤达-时间这样的库。我想你可以这样做:
新LocalDate().minusMonths(7).withDayOfMonth(1)
(7个月用于支付任何部分月.留下了一个月前的边缘.但呃:) )
https://stackoverflow.com/questions/9460854
复制相似问题