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

如何处理Java中的时间问题

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
这个方法中,23小时的时间将被认为是0天。


使用这种方法计算时间段,你从计算过去的毫秒开始。为了做到这一点,首先转换每个日期为从1970年1月1日起得毫秒数。你可以从第二个毫秒值中减去第一个毫秒值。这里有一个简单的计算:

 

 

import java.util.*;

 

 

public class ElapsedMillis {


public static void main(String args) {


GregorianCalendar gc1 = new GregorianCalendar(1995, 11, 1, 3, 2, 1);


GregorianCalendar gc2 = new GregorianCalendar(1995, 11, 1, 3, 2, 2);


// the above two dates are one second apart


Date d1 = gc1.getTime();


Date d2 = gc2.getTime();


long l1 = d1.getTime();


long l2 = d2.getTime();


long difference = l2 - l1;


System.out.println("Elapsed milliseconds: " + difference);


}


}

 

 

上面的程序打印如下:

 

 

Elapsed milliseconds: 1000

 

 

这个程序也带来一点混淆。GregorianCalendar类的getTime()返回一个Date对象,Date类的getTime()方法返回从1970年1月1日到这个时间的long类型的毫秒数值。虽然他们的方法名字相同,返回值却不一样!


下面的程序片断用简单的整数除法转换毫秒到秒:

 

 

long milliseconds = 1999;


long seconds = 1999 / 1000;

 

 

这种方法舍去小数部分转换毫秒到秒,所以1,999毫秒等于1秒,2,000毫秒等于2秒。


计算更大的单位-例如天数,小时和分钟-给定一个时间数值,可以使用下面的过程:


1. 计算最大的单位,减去这个数值的秒数


2. 计算第二大单位,减去这个数值的秒数


3. 重复操作直到只剩下秒


例如,如果你的时间的10,000秒,你想知道这个数值相应的是多少小时,多少分
钟,多少秒,你从最大的单位开始:小时。10,000除以3600(一个小时的秒数)得到小时数。使用整数除法,答案是2小时(整数除法中小数舍去)计算
剩下的秒数,10,000-(3,600 x 2) = 2,800秒。所以你有2小时和2,800秒。


将2,800秒转换成分钟,2,800除以60。使用整数除法,答案是46。2,800 - (60 x 46) = 40秒。最后答案是2小时,46分,40秒。


下面的Java程序使用上面的计算方法:

 

 

import java.util.*;

 

 

public class Elapsed1 {


public void calcHMS(int timeInSeconds) {


int hours, minutes, seconds;


hours = timeInSeconds / 3600;


timeInSeconds = timeInSeconds - (hours * 3600);


minutes = timeInSeconds / 60;


timeInSeconds = timeInSeconds - (minutes * 60);


seconds = timeInSeconds;


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


}

 

 

public static void main(String args) {


Elapsed1 elap = new Elapsed1();


elap.calcHMS(10000);


}


}

 

 

输出结果如下:

 

 

2 hour(s) 46 minute(s) 40 second(s)

 

 

上面的程序甚至在时间少于一个小时也可以正确的计算小时数。例如,你用上面的程序计算1,000秒,输出入下:


0 hour(s) 16 minute(s) 40 second(s)


举一个现实世界的例子,下面的程序计算阿波罗11飞到月球使用得时间:

 

 

import java.util.*;

 

 

public class LunarLanding {

 

 

public long getElapsedSeconds(GregorianCalendar gc1, GregorianCalendar gc2) {


Date d1 = gc1.getTime();


Date d2 = gc2.getTime();


long l1 = d1.getTime();


long l2 = d2.getTime();


long difference = Math.abs(l2 - l1);


return difference / 1000;


}

 

 

public void calcHM(long timeInSeconds) {


long hours, minutes, seconds;


hours = timeInSeconds / 3600;


timeInSeconds = timeInSeconds - (hours * 3600);


minutes = t

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

    免费论文

    原创论文

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