-1
我一直在研究現場股票行情,並在互聯網上找到的一些代碼的幫助下,我找到了一些有用的東西。Android倒計時問題
我從數據庫中獲取日期並將其分解並將其放入毫秒中,這是我找到的代碼接管的地方。
現在剩下的工作完美,除了那些日子,它似乎總是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);
}
現在,我看不出爲什麼會天摸出錯了嗎?
關於可能出錯的任何想法?
謝謝, 克里斯
我試過你的代碼,它工作得很好。給出一個輸入值給出錯誤結果的例子。 – pgsandstrom
那麼這是拉出這個日期數據庫2012-07-07 13:00:00然後分裂日期的一部分,我做了一個小的改動,以阻止它崩潰,因爲它試圖把時間,然後它在以後增加時間。無論如何它說像38d,23h,31min,20sec ?? –
我已經想通了爲什麼我在日子裏得到了不正確的倒計時。它是這樣做的:int month = gregorianCalendar.get(GregorianCalendar.MONTH);看來這部分是給不正確的月份?它給它5而不是6? –