当前位置: 网学 > 编程文档 > JAVA > 正文

如何处理Java中的时间问题

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
imeInSeconds / 60;


System.out.println(hours + " hour(s) " + minutes + " minute(s)" );


}

 

 

public static void main(String args) {


GregorianCalendar lunarLanding = new GregorianCalendar(1969, Calendar.JULY, 20, 16, 17);


GregorianCalendar lunarDeparture = new GregorianCalendar(1969, Calendar.JULY, 21, 13, 54);


GregorianCalendar startEVA = new GregorianCalendar(1969, Calendar.JULY, 20, 22, 56);


GregorianCalendar endEVA = new GregorianCalendar(1969, Calendar.JULY, 21, 1, 9);

 

 

LunarLanding apollo = new LunarLanding();

 

 

long eva = apollo.getElapsedSeconds(startEVA, endEVA);


System.out.print("EVA duration = ");


apollo.calcHM(eva);

 

 

long lunarStay = apollo.getElapsedSeconds(lunarLanding, lunarDeparture);


System.out.print("Lunar stay = ");


apollo.calcHM(lunarStay);


}


}

 

 

上面程序输出如下:

 

 

EVA duration = 2 hour(s) 13 minute(s)


Lunar stay = 21 hour(s) 37 minute(s)

 

 

目前为止,我们计算的基础公式是这样的:1分钟=60秒,1小时=60分,1天=24小时。


"1个月=?天,1年=?天"怎么办?


月份的天数有28,29,30,31;一年可以是365或366天。因此,当你试图计算严格单位的月份和年时,问题就产生了。例如,如果你使用月份的平均天数(近似30.4375),并且计算下面的时间间隔:

 

 

* July 1, 2:00 a.m. to July 31, 10:00 p.m.


* February 1, 2:00 a.m. to February 29, 10:00 p.m.

 

 

第一个计算结果是1个月;第二个结果是0个月!


所以,在计算严格单位时间的月份和年份是要想好。


时间段,情况 2:时间单位变化


时间单位的变化相当的简单:如果你要统计天数,你可以简单的统计日期变化次数。例如,如果某事15日开始,17日结束,经过2天。(日期先是便到16,再到17)同样的,一个步骤下午3:25开始,4:10 p.m结束,历时1个小时,因为小时数值变了一次(从3到4)。


图书馆经常使用这种习惯计算时间。例如,如果你从图书馆接一本书,我不能占有这本书最少24小时,会认为图书馆这样才给你算一天。而是,我的账号上记录我借书的日期。日期以变成下一天,我就已经结这本书一天了,即使总计不足24小时。


当使用单位的变化来计算时间段,通常感觉计算的时间没有多于一个时间单位。例如,如
果9:00
p.m.我借了一本图书馆的书,第二天中午还回去,我能算出我借了这本书一天了。可是,有一种感觉在问:"1天和几个小时呢?"这本说总计借出15个小
时,答案是一天还差9个小时呢?因此,这篇文章里,我将以一个时间单位变化计算时间。


单位变化的时间算法


这是你怎样计算两个日期的时间变化:


1. 制作两个日期的拷贝。Close()方法能制作拷贝。


2. 使用日期拷贝,将所有的小于时间单位变化的部分设置成它的最小单位。例如,如果计算天数,那么将小时,分钟,秒和毫秒设置成0。这种情况中,使用clear()方法将时间值设置称他们各自的最小值。


3. 取出较早的日期,将你要计算的单位加1,重复直到两个日期相等。你加1的次数就是答案。可以使用before()和after()方法,他们返回boolean值,来判断是否一个日期在另一个日期之前或之后。


下面的类的方法用来计算天数和月数。

 

 

import java.util.*;

 

 

public class ElapsedTime {

 

 

public int getDays(GregorianCalendar g1, GregorianCalendar g2) {


int elapsed = 0;


GregorianCalendar gc1, gc2;

 

 

if (g2.after(g1)) {


gc2 = (GregorianCalendar) g2.clone();


gc1 = (GregorianCalendar) g1.clone();


}


else {


gc2 = (GregorianCalendar) g1.cl

  • 上一篇资讯: JAVA元数据注释初探
  • 下一篇资讯: FCKEditer使用详解
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号