java时间差计算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java时间差计算相关的知识,希望对你有一定的参考价值。
我是初学者..
现在有一个停车场收费程序.要求用户进入停车场时点击“进入”按钮,离开时点击“离开按钮”。以此获取时间差来进行收费..但是我不知道怎么计算点击这两个按钮的时间差....主要是不知道怎样分别获取进入的时间和离开的时间.
我的CODE是这样的(没写完..)
public class tuna extends JFrame
private JButton btnEnter;
private JButton btnLeave;
private JLabel lblStatus;
public tuna()
super("Car Parking Payment System");
setLayout(new FlowLayout());
btnEnter=new JButton("enter");
add(btnEnter,BorderLayout.WEST);
btnLeave=new JButton("leave");
add(btnLeave,BorderLayout.EAST);
lblStatus=new JLabel("");
add(lblStatus,BorderLayout.SOUTH);
leaveClass newleave=new leaveClass();
enterClass newenter=new enterClass();
btnEnter.addActionListener(newenter);
btnLeave.addActionListener(newleave);
publicclass leaveClass implements ActionListener
publicvoid actionPerformed(ActionEvent e)
Date leavehour =new Date();
SimpleDateFormat sdfL=new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
String Lcurtime=sdfL.format(new Date());
if (e.getSource()==btnLeave)
lblStatus.setText("you leave at "+Lcurtime);
Date leavetime =new Date();
int leavehour=leavetime.getHours();
publicclass enterClass implements ActionListener
publicvoid actionPerformed(ActionEvent ee)
Date enterhour =new Date();
SimpleDateFormat sdfE=new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
String Ecurtime=sdfE.format(new Date());
if (ee.getSource()==btnEnter)
lblStatus.setText("you leave at "+Ecurtime);
Date entertime =new Date();
int enterhour=entertime.getHours();
求大神~~~谢谢谢谢
获取一个时间
long enterTime = System.currentTimeMillis(); //这是获取毫秒数
这个你得保存进数据库 然后根据识别信息 区别是哪个客户。
2 点击离开按钮
long leaveTime = System.currentTimeMillis(); //这是获取毫秒数
根据识别信息,在数据库,找到对应的enterTime
leaveTime -- enterTime 就是车子停留的毫秒数
(leaveTime -- enterTime)/1000 秒数
(leaveTime -- enterTime)/(1000*60*60) 小时数
当然了,小时有浮点数,比如1.6小时可能按照2小时计算之类的算法要自己计算。 参考技术A 第一:你的收费是按小时?还是按分钟?
第二:你的时间数据要保存到数据库吗?
1.点击“进入”按钮(按钮要设置监听器的,这个知道吧),取得当前时间
long startTime = System.currentTimeMillis(); //取得是毫秒数,它返回从 1970 年 1 月 1 日午夜开始到当前的总毫秒数。
2.点击“离开按钮”(也要设置监听器),取得当前时间
long endTime = System.currentTimeMillis();
3.车子停留的时间
long time=endTime-startTime; //这个time是停留的毫秒数
4.转化成小时和分钟
int hour=time/(1000*60*60);//停留多少小时
int minute=time/(1000*60)%60;//停留多少分钟
例如是:1小时25分钟,如果你是按小时计费,那分钟就四舍五入,如果按分钟计费,那就把小时转化成分钟。
希望对你有帮助。 参考技术B Date对象的getTime()直接减,得到毫秒差 参考技术C System.currentTimeMillis()
获取当前时间
java中如何计算出两个日期之间相差多少天
如果我date1="1987-01-01"
date2="2010-01-01"
之间相差多少天??
在java中如何算。。。。。。???
思路就是根据它们相差的毫秒数除以每天的毫秒数(60*60*24*1000),代码如下:
public static void main(String[] args) throws ParseException
String date1="1987-01-01";
String date2="2010-01-01";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(60*60*24*1000);
System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");
运行结果如下:
扩展资料:
Java使用以下三种方法来比较两个日期:
1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行
例如:
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
以上实例编译运行结果如下:
当前时间为: 2018-09-14 10:16:34
参考资料:
Java官方API接口-Date
菜鸟教程-Java 日期时间
参考技术A java可以使用计算日期的天数差,以下是详细代码:import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test16
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1=sdf.parse("2012-09-08 10:10:10");
Date d2=sdf.parse("2012-09-15 00:00:00");
System.out.println(daysBetween(d1,d2));
System.out.println(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));
/**
* 计算两个日期之间相差的天数
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
/**
*字符串的日期格式的计算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
参考技术B import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test
public static void main(String[] args) throws ParseException
String date1="1987-01-01";
String date2="2010-01-01";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(3600*24*1000);
System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");
本回答被提问者采纳 参考技术C public long differ(Date date1, Date date2)
return date2.getTime() / 86400000 - date1.getTime()/ 86400000;
参考资料:http://blog.csdn.net/solomonxu/archive/2007/04/27/1587237.aspx
参考技术D (big.getTime() - small.getTime()) / (1000 * 60 * 60 * 24);以上是关于java时间差计算的主要内容,如果未能解决你的问题,请参考以下文章