gpt4 book ai didi

java - 如何在java中为黑莓 Storm 制作倒计时和正计时应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:01 26 4
gpt4 key购买 nike

您好,我想创建一个用于倒计时和计算日期的黑莓应用程序,例如,如果您输入您的出生日期,它应该生成已经过去了多少年、月、日、小时和分钟,我想知道如何创建正确的逻辑来创建此应用程序。提前致谢....

最佳答案

使用基本的 Java SE 6 API,您最好的选择是 java.util.Calendar 。它也可在 Java ME 中找到。 。由于没有内置工具来计算周期,因此需要大量代码来正确计算耗时。您需要克隆日历实例并在计数循环内添加年、月和日,直到到达结束日期。你不能只除以秒,因为这不会考虑闰年、日间储蓄之类的东西。计算完毕后,您可以按照通常的方式将剩余时间划分为小时、分钟和秒。

这是一个启动示例:

package com.stackoverflow.q2936686;

import java.util.Calendar;

public class ElapsedTimeWithCalendar {

public static void main(String[] args) throws Exception {
Calendar birthDate = Calendar.getInstance();
birthDate.set(1978, 3 - 1, 26, 12, 35, 0); // My birthdate.
Calendar now = Calendar.getInstance(); // Now.

Integer[] elapsed = new Integer[6];
Calendar clone = (Calendar) birthDate.clone(); // Otherwise changes are been reflected.
elapsed[0] = elapsed(clone, now, Calendar.YEAR);
clone.add(Calendar.YEAR, elapsed[0]);
elapsed[1] = elapsed(clone, now, Calendar.MONTH);
clone.add(Calendar.MONTH, elapsed[1]);
elapsed[2] = elapsed(clone, now, Calendar.DATE);
clone.add(Calendar.DATE, elapsed[2]);
elapsed[3] = (int) (now.getTimeInMillis() - clone.getTimeInMillis()) / 3600000;
clone.add(Calendar.HOUR, elapsed[3]);
elapsed[4] = (int) (now.getTimeInMillis() - clone.getTimeInMillis()) / 60000;
clone.add(Calendar.MINUTE, elapsed[4]);
elapsed[5] = (int) (now.getTimeInMillis() - clone.getTimeInMillis()) / 1000;

System.out.format("%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n", elapsed);
}

private static int elapsed(Calendar before, Calendar after, int field) {
Calendar clone = (Calendar) before.clone(); // Otherwise changes are been reflected.
int elapsed = -1;
while (!clone.after(after)) {
clone.add(field, 1);
elapsed++;
}
return elapsed;
}

}

相当冗长,是的。然而,在 Java SE 7 中,即将推出新的日期和时间 API ( JSR-310 ),它将与当前可用的 JodaTime API 类似。 。下面是一个使用 JodaTime 的启动示例:

DateTime birthDate = new DateTime(1978, 3, 26, 12, 35, 0, 0);
DateTime now = new DateTime();
Period elapsed = new Period(birthDate, now);

PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendYears().appendSuffix(" years, ")
.appendMonths().appendSuffix(" months, ")
.appendDays().appendSuffix(" days, ")
.appendHours().appendSuffix(" hours, ")
.appendMinutes().appendSuffix(" minutes, ")
.appendSeconds().appendSuffix(" seconds")
.toFormatter();

System.out.println(formatter.print(elapsed));

有什么区别啊? :)

关于java - 如何在java中为黑莓 Storm 制作倒计时和正计时应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936686/

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