Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Android 安卓倒计时问题_Android - Fatal编程技术网

Android 安卓倒计时问题

Android 安卓倒计时问题,android,Android,我一直在开发一个实时的股票代码,在互联网上找到的一些代码的帮助下,我设法找到了某种工作 我从数据库中获取一个日期,并将其拆分成毫秒,这就是我找到的代码接管的地方 现在剩下的工作都很完美,除了几天,似乎总是30天,再加上剩下多少天 代码如下: GregorianCalendar endDate = new GregorianCalendar(Integer.parseInt(separated[0]), Integer.parseInt(separated[1]), Intege

我一直在开发一个实时的股票代码,在互联网上找到的一些代码的帮助下,我设法找到了某种工作

我从数据库中获取一个日期,并将其拆分成毫秒,这就是我找到的代码接管的地方

现在剩下的工作都很完美,除了几天,似乎总是30天,再加上剩下多少天

代码如下:

        GregorianCalendar endDate = new GregorianCalendar(Integer.parseInt(separated[0]), Integer.parseInt(separated[1]),  Integer.parseInt(separated[2]), Integer.parseInt(Time[0]), Integer.parseInt(Time[1]), 00);
    GregorianCalendar startDate = new GregorianCalendar(year, month, day, hours, minutes, seconds);

    long diffInMs = endDate.getTimeInMillis() - startDate.getTimeInMillis();


    new CountDownTimer(diffInMs, 1000) {

         public void onTick(long millisUntilFinished) { 
             int seconds = (int)(millisUntilFinished / 1000) % 60 ;
             int minutes = (int)((millisUntilFinished / (1000*60)) % 60);
             int hours = (int)((millisUntilFinished / (1000*60*60)) % 24);
             int days = (int)((millisUntilFinished / (1000*60*60*24)) % 365);
             //int years = (int)(millisUntilFinished / 1000*60*60*24*365);

             ArrayList<String> timeArray = new ArrayList<String>();

    //               if(years > 0)   
    //                   timeArray.add(String.valueOf(years)   + "y");

             if(days > 0)    
                 timeArray.add(String.valueOf(days) + "d");

             if(hours>0)   
                 timeArray.add(String.valueOf(hours) + "h");

             if(minutes>0) 
                 timeArray.add(String.valueOf(minutes) + "min");

             if(seconds>0) 
                 timeArray.add(String.valueOf(seconds) + "sec");

             String time = "";
             for (int i = 0; i < timeArray.size(); i++) 
             {
                 time = time + timeArray.get(i);
                 if (i != timeArray.size() - 1)
                     time = time + ", ";
             }

             if (time == "")
               time = "0 sec";

             Countdown.setText("Database Lock: " + time );


         }
GregorianCalendar endDate=新的GregorianCalendar(Integer.parseInt(分隔[0])、Integer.parseInt(分隔[1])、Integer.parseInt(分隔[2])、Integer.parseInt(时间[0])、Integer.parseInt(时间[1])、00;
GregorianCalendar startDate=新的GregorianCalendar(年、月、日、时、分、秒);
long diffInMs=endDate.getTimeInMillis()-startDate.getTimeInMillis();
新的倒计时(diffInMs,1000){
公共无效条(长毫秒直至完成){
整数秒=(整数)(毫秒/1000)%60;
整数分钟=(整数)((毫微秒完成/(1000*60))%60);
整数小时=(整数)((千分之六十/(1000*60*60))%24);
整数天=(整数)((百万分位数/(1000*60*60*24))%365);
//整数年=(整数)(千分之一完工/1000*60*60*24*365);
ArrayList timeArray=新的ArrayList();
//如果(年数>0)
//timeArray.add(String.valueOf(years)+“y”);
如果(天数>0)
timeArray.add(String.valueOf(days)+“d”);
如果(小时数>0)
timeArray.add(String.valueOf(hours)+“h”);
如果(分钟>0)
timeArray.add(String.valueOf(minutes)+“min”);
如果(秒>0)
timeArray.add(String.valueOf(秒)+“秒”);
字符串时间=”;
对于(int i=0;i
现在我不明白为什么日子会不好过

有什么想法可能是错误的吗

谢谢,
Chris

如果你想花一天、一小时、一分钟、一秒的时间,那么代码对我来说就不同了

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateDiff{ 

  public static void main(String[] args){

  Date date = null;
  Date date1 = new Date();
  System.out.println(date1.toString());


  try { 
  String str_date="Tue, 25 Jun 2012 05:43:27";
  DateFormat formatter ;
  //Date date ;
  formatter = new SimpleDateFormat("EEE,dd MMM yy HH:mm:ss");
  date = (Date)formatter.parse(str_date); 
  System.out.println("Today is " +date );
  } catch (ParseException e)
   {

     System.out.println("Exception :"+e); 

  } 

  long diff = date1.getTime() - date.getTime();
  long seconds = diff / 1000;
  long minutes = seconds / 60;
  long hours = minutes / 60;
  long days = hours / 24;


       System.out.println("Time in seconds: " + seconds
      + " seconds.");
       System.out.println("Time in minutes: " + minutes
     + " minutes.");
       System.out.println("Time in hours: " + hours
     + " hours.");
       System.out.println("Time in days: " +days
     + " days.");



  }
}

我试过你的代码,它运行得很好。举一个输入值的例子,它给出了错误的结果。它将这个日期从数据库中取出2012-07-07 13:00:00,然后将日期部分拆分,我做了一点修改,以阻止它崩溃,因为它试图将时间加上,然后再加上时间。总之,它说的是like 38d,23小时,31分钟,20秒??我已经弄明白了为什么我得到了一个不正确的倒计时日期..这与此有关:int month=gregoriacalendar.get(gregoriacalendar.month);似乎这部分给出了不正确的月份??它给出了5而不是6??