信息发布软件,b2b软件,广告发布软件
标题: java中计算两个日期相差几天和多方法实例教程 [打印本页]
作者: 软件定制 时间: 2016-9-30 12:56
标题: java中计算两个日期相差几天和多方法实例教程
java教程|再次记下Java计算两个日期时间相差几天几分钟几秒,这样计算两个时间的在开发中是常常用到的publicclassTest{publicvoiddateDiff(StringstartTime,Stri...
再次记下Java计算两个日期时间相差几天几分钟几秒,这样计算两个时间的在开发中是常常用到的
public class Test {
public void dateDiff(String startTime, String endTime, String format) {
//按照传入的格式生成一个simpledateformate对象
SimpleDateFormat sd = new SimpleDateFormat(format);
long nd = 1000*24*60*60;//一天的毫秒数
long nh = 1000*60*60;//一小时的毫秒数
long nm = 1000*60;//一分钟的毫秒数
long ns = 1000;//一秒钟的毫秒数
long diff;
try {
//获得两个时间的毫秒时间差异
diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();
long day = diff/nd;//计算差多少天
long hour = diff%nd/nh;//计算差多少小时
long min = diff%nd%nh/nm;//计算差多少分钟
long sec = diff%nd%nh%nm/ns;//计算差多少秒
//输出结果
System.out.println("时间相差:"+day+"天"+hour+"小时"+min+"分钟"+sec+"秒。");
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Test().dateDiff(new SimpleDateFormat("yyyy-MM-dd").format(new Date()), "2011-4-28", "yyyy-MM-dd");
}
}
-
QQ截图20160923101820.jpg
(8.19 KB, 下载次数: 33984)
作者: 软件定制 时间: 2016-9-30 12:57
实例教程2
在测试工作中经常会使用到比较两个日期相差的天数,我之前用过实现这一功能的两个版本的方法,源代码如下:
(版本1)
publicstaticint getIntervalDays(Date fDate, Date oDate) {
if (null == fDate || null == oDate) {
return -1;
}
long intervalMilli = oDate.getTime() - fDate.getTime();
return (int) (intervalMilli / (24 * 60 * 60 * 1000));
}
(版本2)
publicstaticint daysOfTwo(Date fDate, Date oDate) {
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
return day2 - day1;
}
为什么使用这两个版本的方法,因为我使用过程中,遇到了和我预期不一致的情况,比如下面一个使用范例
publicstaticvoid main(String[] args) {
Date fDate = new GregorianCalendar().getTime();
Date oDate = new GregorianCalendar(2009, 2, 15,13,13,0).getTime();
System.out.println("使用 getIntervalDays 相差天数 = "
+ getIntervalDays(fDate, oDate));
System.out.println("使用 daysOfTwo 相差天数 = "
+ daysOfTwo(fDate, oDate));
}
这个例子中调用了两个版本的方法,但输出结果有时不相同,此前我一直不明白为什么,后来细心研究了一下,原来是我对这两个版本的方法没有清楚的理解。版本1的方法要比较的严格意义上的天,举个例子,计算今天与昨天比较相差几天,我们或许都认为是1,但我们要输入两个日期类型的参数,这个日期中不仅包含天,还有小时,分等,版本1会根据您输入的小时与分不同,返回不同的结果的,比如你输入的参数今天中午与昨天晚上的两个时间,它就会告诉你相差0天。同样的输入版本2只关心天,输出的结果是1,也是我想要的结果。总结起来这两个方法都是对的,关键的是调用者要明白你想要的究竟是什么样的结果。
作者: 软件定制 时间: 2016-9-30 12:57
实例教程3
我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
方法一:
- DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try
- {
- Date d1 = df.parse("2004-03-26 13:31:40");
- Date d2 = df.parse("2004-01-02 11:30:24");
- long diff = d1.getTime() - d2.getTime();
- long days = diff / (1000 * 60 * 60 * 24);
- }
- catch (Exception e)
- {
- }
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try{ Date d1 = df.parse("2004-03-26 13:31:40"); Date d2 = df.parse("2004-01-02 11:30:24"); long diff = d1.getTime() - d2.getTime(); long days = diff / (1000 * 60 * 60 * 24);}catch (Exception e){}
方法二:
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- java.util.Date now = df.parse("2004-03-26 13:31:40");
- java.util.Date date=df.parse("2004-01-02 11:30:24");
- long l=now.getTime()-date.getTime();
- long day=l/(24*60*60*1000);
- long hour=(l/(60*60*1000)-day*24);
- long min=((l/(60*1000))-day*24*60-hour*60);
- long s=(l/1000-day*24*60*60-hour*60*60-min*60);
- System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date now = df.parse("2004-03-26 13:31:40"); java.util.Date date=df.parse("2004-01-02 11:30:24"); long l=now.getTime()-date.getTime(); long day=l/(24*60*60*1000); long hour=(l/(60*60*1000)-day*24); long min=((l/(60*1000))-day*24*60-hour*60); long s=(l/1000-day*24*60*60-hour*60*60-min*60); System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
方法三:
- SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- java.util.Date begin=dfs.parse("2004-01-02 11:30:24");
- java.util.Date end = dfs.parse("2004-03-26 13:31:40");
- long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
- long day1=between/(24*3600);
- long hour1=between%(24*3600)/3600;
- long minute1=between%3600/60;
- long second1=between%60/60;
- System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date begin=dfs.parse("2004-01-02 11:30:24"); java.util.Date end = dfs.parse("2004-03-26 13:31:40"); long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒 long day1=between/(24*3600); long hour1=between%(24*3600)/3600; long minute1=between%3600/60; long second1=between%60/60; System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");
====================================================
java 比较时间大小
- String s1="2008-01-25 09:12:09";
- String s2="2008-01-29 09:12:11";
- java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- java.util.Calendar c1=java.util.Calendar.getInstance();
- java.util.Calendar c2=java.util.Calendar.getInstance();
- try
- {
- c1.setTime(df.parse(s1));
- c2.setTime(df.parse(s2));
- }catch(java.text.ParseException e){
- System.err.println("格式不正确");
- }
- int result=c1.compareTo(c2);
- if(result==0)
- System.out.println("c1相等c2");
- else if(result<0)
- System.out.println("c1小于c2");
- else
- System.out.println("c1大于c2");
String s1="2008-01-25 09:12:09";String s2="2008-01-29 09:12:11";java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Calendar c1=java.util.Calendar.getInstance();java.util.Calendar c2=java.util.Calendar.getInstance();try{c1.setTime(df.parse(s1));c2.setTime(df.parse(s2));}catch(java.text.ParseException e){System.err.println("格式不正确");}int result=c1.compareTo(c2);if(result==0)System.out.println("c1相等c2");else if(result<0)System.out.println("c1小于c2");elseSystem.out.println("c1大于c2");
//时间格式转换
- FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
- String date = df.format(java.util.Date());
FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");String date = df.format(java.util.Date());
欢迎光临 信息发布软件,b2b软件,广告发布软件 (http://postbbs.com/) |
Powered by Discuz! X3.2 |