Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 Android,两个月之间的日差_Java_Android - Fatal编程技术网

Java Android,两个月之间的日差

Java Android,两个月之间的日差,java,android,Java,Android,我正在尝试编写代码,以找出两个日期之间的日差,当一个月有31天,但当一个月有30天时,结果减少了1天。这种情况是29天,28天,一个月减少了2,3天,我希望我能知道原因 守则: public int dateAfterMod (Calendar endDate){ //TO GET THE CURRENT DATE GregorianCalendar currentDate = new GregorianCalendar (); cu

我正在尝试编写代码,以找出两个日期之间的日差,当一个月有31天,但当一个月有30天时,结果减少了1天。这种情况是29天,28天,一个月减少了2,3天,我希望我能知道原因 守则:

 public int dateAfterMod (Calendar endDate){

    //TO GET THE CURRENT DATE
            GregorianCalendar currentDate = new GregorianCalendar (); 
            currentDate=(GregorianCalendar) endDate;

    //THE CAL.ADD BECUSE THE 1ST MONTH IN THE YEAR IS 0 NOT 1
            currentDate.add(Calendar.MONTH, 1);
    //TO SET THE DATE TO THE FIRST DAY IN THE MOTH FOR COMPAISSON
            currentDate.set(Calendar.DAY_OF_MONTH, 1);

    //TO SET THE START DATE WICH IS 1/1/2013
            GregorianCalendar startDate = new GregorianCalendar(2013, 1, 1);  

    //TO FIND THE DIFF BETWEEN THE START DATE AND CUREENT DATE 
            long diff=(((currentDate.getTimeInMillis()-
    startDate.getTimeInMillis())/(1000*60*60*24)));
这样试试

public static void main(String[] args) {

String dateStart = "01/14/2012 09:29:58";
String dateStop = "01/15/2012 10:31:48";

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    DateTime dt1 = new DateTime(d1);
    DateTime dt2 = new DateTime(d2);

    System.out.print(Days.daysBetween(dt1, dt2).getDays() + " days, ");
    System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
    System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, ");
    System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() % 60 + " seconds.");

 } catch (Exception e) {
    e.printStackTrace();
 }
输出


检查这个:另一种方法是您可以为if…else if…else编写代码。通过这种方式,您可以通过添加特定的日差来处理31/30/29/28天的日差。除以1000*60*60*24将毫秒转换为天通常是一个非常糟糕的主意,因为当夏令时开始或结束时,您得到的一天是23或25小时。请参阅和。
1 days, 1 hours, 1 minutes, 50 seconds.