站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题求助:有关于Date中时间格式转换的问题

求助:有关于Date中时间格式转换的问题

摘要: 求助:有关于Date中时间格式转换的问题


long a=date.getTime();
date是定义的Date类的实例,我想请问一下这个a得到的到底是一个什么东东啊,反正是好大的一个数,单位是什么啊,是ms???????如果我要把它转换成HH:MM:SS的这种格式应该怎么转换啊?(怎样转换才是重点,我把那个a的单位当成是ms然后转换以后得到的结果老是有错)


//毫秒数

DateFormat df = new SimpleDateFormat(-#34;hh:mm:ss-#34;);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(new Date().getTime());

String s = df.format(c.getTime());


long a=date.getTime(); a 是毫秒数,从某个时间点算起的。
SimpleDateFormat sdf = new SimpleDateFormat(-#34;hh:mm:ss-#34;);
String time = sdf.format(new Date());


格式换成HH:mm:ss是24小时的


是某个时间到date的毫秒数

这个时间好象是1970年1月1日0时0分0秒


楼上的好像是对的是现在到1970年1月1日0点0分0秒


我的意思是这样的:
我定义了两个 Date类的实例date1和date2
然后:long a1=date1.getTime();
long a2=date2.getTime();
long a3=a2-a1;
我是想把这个a3表示成HH:mm:ss的形式,请问怎么做啊
我是这样做的:
long a3=(a1-a2)/1000;
long nDay=a3/(24*60*60);
long nHour=(a3-nDay*24*60*60)/(60*60);
long nMinute=(a3-nDay*24*60*60-nHour*60*60)/60;
long nSecond=a3-nDay*24*60*60-nHour*60*60-nMinute*60;
String time=nHour+-#34;:-#34;+nMinute+-#34;:-#34;+nSecond;


long a3=a2-a1;
Date date = new Date(a3);
SimpleDateFormat sdf = new SimpleDateFormat(-#34;hh:mm:ss-#34;);
String time = sdf.format(date);
system.out.println(time);


public class ShowTime
{
public static void main(String args[])
{
Show showtime=new Show();
}
}

class Show extends JFrame implements ActionListener
{
JTextField tf1,tf2,tf3;
JButton b1,b2;
JLabel l1,l2,l3;
Date starttime;
Date endtime;
Date passtime;
JFrame f=new JFrame(-#34;简易电脑开机计时器-#34;);
Icon ic1,ic2,ic3;
Font font;
JMenuBar menubar;
JMenu menu;
JMenuItem help,quit,about1;
JPanel p;
JDialog about2;
public static long a1,a2,a3;
public Show()
{
menubar=new JMenuBar();
menu= new JMenu(-#34;系统-#34;);
menu.setMnemonic(-#39;A-#39;);//set shorcut
about1=new JMenuItem(-#34;关于-#34;);
about2=new JDialog(this);
help=new JMenuItem(-#34;帮助-#34;);
quit=new JMenuItem(-#34;退出-#34;);
about1.setAccelerator(KeyStroke.getKeyStroke(-#39;A-#39;,Event.CTRL_MASK));
quit.setAccelerator(KeyStroke.getKeyStroke(-#39;X-#39;,Event.CTRL_MASK));
help.setAccelerator(KeyStroke.getKeyStroke(-#39;H-#39;,Event.CTRL_MASK));
f.setJMenuBar(menubar);
menubar.add(menu);
menu.add(about1);
menu.add(help);
menu.addSeparator();
menu.add(quit);
JOptionPane.showMessageDialog(null,-#34;~_~欢迎使用简易电脑开机计时器~_~-#34;,-#34;--欢迎信息---#34;,1,new ImageIcon(-#34;E://kaiji.gif-#34;));
p=new JPanel();
f.add(p);
ic2=new ImageIcon(-#34;E://kaiji.gif-#34;);
ic1=new ImageIcon(-#34;E://dangqian.gif-#34;);
ic3=new ImageIcon(-#34;E://yikai.gif-#34;);
font=new Font(-#34;SanSerif-#34;,Font.BOLD, 12);
l1=new JLabel(-#34;开机时间-#34;);
l1.setIcon(ic1);
l1.setFont(font);
l2=new JLabel(-#34;当前时间-#34;);
l2.setIcon(ic2);
l3=new JLabel(-#34;开机计时-#34;);
l3.setIcon(ic3);
Calendar cl1=Calendar.getInstance();
SimpleDateFormat sdf1 = new SimpleDateFormat(-#34;HH:mm:ss-#34;);
String starttime = sdf1.format(cl1.getTime());
a1=cl1.getTimeInMillis();
tf1=new JTextField(starttime,18);
tf2=new JTextField(-#34;How are you...-#34;,18);
tf3=new JTextField(-#34;How old are you..-#34;,18);
//tf1.setEditable(false);
//tf2.setEditable(false);
//tf3.setEditable(false);
b1=new JButton(-#34;显示当前时间-#34;);
b2=new JButton(-#34;显示已开机时间-#34;);
p.add(l1);
p.add(tf1);
p.add(l2);
p.add(tf2);
p.add(l3);
p.add(tf3);
p.add(b1);
p.add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
about1.addActionListener(this);
help.addActionListener(this);
quit.addActionListener(this);
f.setSize(305,185);
f.setVisible(true);
f.setResizable(false);

}

public void actionPerformed (ActionEvent e) {
if(e.getSource()==b1)
{
Calendar cl2=Calendar.getInstance();
SimpleDateFormat sdf2 = new SimpleDateFormat(-#34;HH:mm:ss-#34;);
String nowtime = sdf2.format(cl2.getTime());
a2=cl2.getTimeInMillis();
tf2.setText(nowtime);
}
else if(e.getSource()==b2)
{
a3=a2-a1;
Date date=new Date(a3);
SimpleDateFormat sdf = new SimpleDateFormat(-#34;HH:mm:ss-#34;);
String time = sdf.format(date);
tf3.setText(time);
}
else if(e.getSource()==about1)
{
//JOptionPane.showMessageDialog(null,-#34;谢谢你的使用,本程序由Tanp制作,有很多不足之处,敬请您提出宝贵的意见!-#34;,-#34;--关于---#34;,1);
about2.getContentPane().add(new JLabel(-#34;--电脑开机计时器V1.0---#34;));
about2.setModal(true);
about2.setSize(200,100);
about2.setVisible(true);
}
else if(e.getSource()==help)
{ //Show s=new Show();
JOptionPane.showMessageDialog(null,-#34;无聊之作,有很多不足之处,敬请您提出宝贵的意见-#34;,-#34;--帮助---#34;,1);
}
else if(e.getSource()==quit)
{
int s=JOptionPane.showConfirmDialog(null,-#34;你真的要退出吗-#34;,-#34; 退出程序-#34;,JOptionPane.YES_NO_CANCEL_OPTION);
if(s==JOptionPane.YES_OPTION)
System.exit(0);
}
}
}



前面的问题已经解决了,现在的问题是:当程序运行的时候,开机时间:17:41:12
过一会儿后点击显示当前时间:17:41:52,然后点击显示已开机时间:结果显示是:08:00:40
怎么多出来8个小时了啊?这是怎么回事啊???


这里这个a是一个和1970-01-01 00:00:00的一个时间差,单位是?(记不得了),如果转化有有一个很好的类叫做:java.text.SimpleDateFormat ,一个简单的用法

SimpleDateFormat dateformt=new SimpleDateFormat(-#34;yyyy-MM-dd-#34;);
Date now = new Date();
String s = formatter.format(now);

如果遇到时间的运算,我个人喜欢用 Calendar类!

你自己可以翻看JDK帮助文档,前人已经做好的东西,拿来用吧,用过你学习,就自己研究,做工程就知道怎么用就行了




最简单的就是用toString()方法


来人啊,帮忙看看啊...


还没有解决????


结贴了..


↑返回目录
前一篇: 请教一个算法(脑袋有点晕了,望请高手帮忙)
后一篇: log无法显示行号