我在计算两次约会的时差。。
Calendar currentDate = Calendar.getInstance();
long currentDateInMillis = currentDate.getTimeInMillis();
//Set Event Date and time
Calendar nextDate = Calendar.getInstance();
// set the month, date, year, hour, minute, second, and millisecond
nextDate.set(Calendar.YEAR, 2013);
nextDate.set(Calendar.MONTH, 10); // January is 0, Feb is 1, etc.
nextDate.set(Calendar.DATE, 27);
nextDate.set(Calendar.HOUR_OF_DAY, 23);
nextDate.set(Calendar.MINUTE, 0);
nextDate.set(Calendar.SECOND, 0);
nextDate.set(Calendar.MILLISECOND, 0);
long nextDateInMillis = nextDate.getTimeInMillis();
timeDiff = nextDateInMillis - currentDateInMillis;
timer = new CountDownTimer(timeDiff, 1000)
{
public void onTick(long millisUntilFinished)
{
int totalSeconds = (int) (millisUntilFinished / 1000);
int daysText = (int) (totalSeconds / 86400);
int hoursText = (int) ((totalSeconds % 86400) / 3600);
int minutesText = (int) (((totalSeconds % 86400) % 3600) / 60);
//int secondsText = (int) (((totalSeconds % 86400) % 3600) % 60);
minutes.setText(String.valueOf(minutesText));
hours.setText(String.valueOf(hoursText));
days.setText(String.valueOf(daysText));
}
public void onFinish()
{
}
};
timer.start();
上面的方法很有效,但它可以提供几天、几小时和几秒钟的时间。我希望它也能告诉我月份。但问题是每个月都有不同的天数,所以我如何才能找到月数呢?
我得说,洛图新索的回答几乎满足了你的需求。所以,我只想补充一点信息。。。你只需要得到当前时间(或者从你有了它之后就把它传进来),取倒数计时的毫秒数,把它们加在一起作为目标时间,然后使用interval找到当前时间和目标时间之间的时间间隔。
把JodaTime当成LotusUNSW是。。。
public void onTick(long millisUntilFinished)
{
long currentTime = DateTimeUtils.currentTimeMillis();
Period period = new Interval(currentTime, currentTime +
millisUntilFinished).toPeriod(PeriodType.yearMonthDayTime());
System.out.printf("%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n",
period.getYears(), period.getMonths(), period.getDays(),
period.getHours(), period.getMinutes(), period.getSeconds());
}
对于您在那里的日期,输出如下:0年,0个月,10天,14小时,6分钟,29秒
你可以在这里找到不同的PeriodType
选项。如果您希望只包含一种类型的单元的总数,那么有一些周期类型,例如PeriodType。months()
如果您想要以月为单位的总时间。
你为什么不利用乔达的时间呢?
例如:
public class DateTimeUtils {
public static void main(String[] args) {
DateTimeUtils obj = new DateTimeUtils();
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("dd/M/yyyy hh:mm:ss");
try {
Date date1 = simpleDateFormat.parse("10/10/2013 11:30:10");
Date date2 = simpleDateFormat.parse("13/11/2014 20:35:55");
obj.printDifference(date1, date2);
} catch (ParseException e) {
e.printStackTrace();
}
}
public void printDifference(Date startDate, Date endDate){
Interval interval =
new Interval(startDate.getTime(), endDate.getTime());
Period period = interval.toPeriod();
System.out.printf(
"%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n",
period.getYears(), period.getMonths(), period.getDays(),
period.getHours(), period.getMinutes(), period.getSeconds());
}
}
只需输入两次,输出如下:
a years, b months, c days, d hours etc...
我试图计算两个时间之间有多少毫秒(例如,从13:00到13:01,有60000毫秒)。时间由2个整数(小时、分钟)表示。 我写了这个函数: 然而,当第二次是第二天时,这将不起作用(例如,从周日14:00到周一13:00之间有多少毫秒?)
问题内容: 我试图找到最干净/最pythonic的方式来评估“ now”是否介于两次之间;然而; 例如,“开始/结束时间”可能会跨越一天的边界,也可能不会跨越一天的边界(仅使用简单的示例): 做一个简单的方案是行不通的! 我目前拥有的一些代码可以评估当前是否为“ NightTime”,如下所示: 我注意到,这些似乎并不能说明开始时间和结束时间跨越一天的边界。 除此之外; 关于添加基于日程安排的任何
问题内容: 我有一个带有StartDate列的表,我想计算两个连续记录之间的时间差。 谢谢。 @ Mark Byers和@ Yahia,我将请求表作为requestId,startdate 我想知道requestid 1和2、2和3、3和4等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的支持。 问题答案: 要实现您的要求,请尝试以下操作(从OP编辑后进行更新): 如
我试图在我正在创建的C#应用程序中显示两个日期之间的年、月和日。(使用控制台进行测试) 我正在使用NodaTime来实现这一点,但在接下来的几个月里,我遇到了一些问题。 我已经阅读了这里的大部分问题和答案,但没有找到任何我可以从中受益的东西。 大多数时候函数工作但有时它不添加月如果天 我使用这个代码进行测试 (2017, 10, 16)和(2018, 1, 15)应该显示为3个月,但它们显示为2个
问题内容: 如果不使用PHP 5.3的date_diff函数(我使用的是PHP 5.2.17),是否有一种简单而准确的方法?我正在考虑以下代码,但是我不知道如何计算leap年: 我正在尝试计算一个人的月数。 问题答案: 您可能还希望将某天包括在内,具体取决于您是否指的是 整个 月。希望你能明白。
问题内容: 我一直在寻找Android API,并且一直在寻找一种方法来计算当前日期和未来日期之间的天数。我对android很陌生,几年来我还没有做过Java。什么是最简单的计算方法? 谢谢 问题答案: 最简单的方法是为此使用Joda Time Days类: