gpt4 book ai didi

Android剩余天数计算错误?

转载 作者:行者123 更新时间:2023-11-30 03:29:18 25 4
gpt4 key购买 nike

我目前正在尝试在我的应用程序中加入一项功能,用户可以在其中输入一个日期,然后当他们保存它时,我想计算从今天到该日期还剩多少天。我的代码如下:

public void daysLeft(String dateSent){

String []ar = dateSent.split("[/]");
int mDay = Integer.parseInt(ar[1]);
int mMonth = Integer.parseInt(ar[0]);
int mYear = Integer.parseInt(ar[2]);

Time TimerSet = new Time();
TimerSet.set(0, 5, 0, mDay, mMonth, mYear); //day month year
TimerSet.normalize(true);
long millis = TimerSet.toMillis(true);

Time TimeNow = new Time();
TimeNow.setToNow(); // set the date to Current Time
TimeNow.normalize(true);
long millis2 = TimeNow.toMillis(true);

long millisset = millis - millis2; //subtract current from future to set the time remaining

final int smillis = (int) (millis); //convert long to integer to display conversion results
final int smillis2 = (int) (millis2);

new CountDownTimer(millisset, 1000) {
public void onTick(long millisUntilFinished) {

mText = (TextView)findViewById(R.id.DateData);

// decompose difference into days, hours, minutes and seconds
int weeks = (int) ((millisUntilFinished / 1000) / 604800);
int days = (int) ((millisUntilFinished / 1000) / 86400);
int hours = (int) (((millisUntilFinished / 1000) - (days * 86400)) / 3600);
int minutes = (int) (((millisUntilFinished / 1000)
- ((days * 86400) + (hours * 3600))) / 60);
int seconds = (int) ((millisUntilFinished / 1000) % 60);
int millicn = (int) (millisUntilFinished / 1000);

mText.setText(" " + days);
saveDate(String.valueOf(days));
}

public void onFinish() {}
}.start();
}

当我运行此代码并说输入日期 19/07/2015 时,剩余天数返回为 760,它们应该是 730。我认为有些计算略有偏差,非常感谢您的帮助有了这个。

谢谢

最佳答案

错误在月份计算中。在 java 中,月份是从 0 开始的(0 是一月)。

因此,

int mMonth = Integer.parseInt(ar[0]);

在您的示例中不正确,它被解释为八月。

你需要减去 1 :

int mMonth = Integer.parseInt(ar[0]) - 1;

编辑 - 更多细节

TimerSet.set(0, 5, 0, mDay, mMonth, mYear);

需要从 0 开始的一个月。 7,在您的示例中,被理解为八月,这就是为什么您需要将 1 减去您解析的基于 1 的值。

关于Android剩余天数计算错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17747851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com