gpt4 book ai didi

java - Calendar.before() 和 Calendar.after() 返回不正确的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:48:31 26 4
gpt4 key购买 nike

我对 Java/Android 中的日期比较有点困惑

            DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm");
Calendar now = Calendar.getInstance();
Calendar c;

c = Calendar.getInstance();
c.set(settings.getInt("year", 0), settings.getInt("month", 0), settings.getInt("day", 0), settings.getInt("hour", 0), settings.getInt("minute", 0));

views.setTextViewText(R.id.textView4, String.valueOf(c.getTime().before(now.getTime())));
views.setTextViewText(R.id.textView2, String.format("%s - %s", df.format(c.getTime()), df.format(now.getTime())));

int timeout = 0;
while( c.getTime().before(now.getTime()) )
{
c.add(Calendar.SECOND, 30);
c.add(Calendar.MINUTE, 12);
c.add(Calendar.HOUR_OF_DAY, 6);
isHigh = 1 - isHigh;
timeout++;
if( timeout >= 400 )
break;
}
views.setTextViewText(R.id.textView5, String.valueOf(c.getTime().before(now.getTime())));
views.setTextViewText(R.id.textView3, String.format("%s - %s", df.format(c.getTime()), df.format(now.getTime())));

这个想法是从保存的设置中获取开始日期,并将 6:12:30 添加到时钟,直到它超过当前时间。

但是,我的文本框给了我以下内容:

false : 09/07/12 04:20 - 11/08/12 00:00

false : 09/07/12 04:20 - 11/08/12 00:00

为什么 2012 年 7 月 9 日在调用“之前(2012 年 8 月 11 日)”时返回 false?

如果我将“.before”更改为“.after”,我会得到:

true : 09/07/12 04:20 - 11/08/12 00:00

true : 20/10/12 15:40 - 11/08/12 00:00

这似乎没有任何意义。

知道我做错了什么吗?谢谢

最佳答案

我想知道是否是因为您的“年份”设置是 12 而不是 2012。然后您会将 09/07/2012 与 11/08/0012 进行比较 - 但由于您的日期格式,您无法分辨。

出于诊断目的,将您的格式字符串更改为 "dd/MM/yyyy HH:mm" 并重试。

关于java - Calendar.before() 和 Calendar.after() 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916743/

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