关于Date

huyanqieyu 2008-04-02 05:20:29
JAVA中的Date怎么用,和Calendar有什么不同,举个简单的例子就行,要说明清楚,Calendar我会用,但Date不会用,我主要是想要计算2个时间的差,在百度上很多人给的方法都要用到Date,所以想要把Date搞懂
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
J_Factory 2008-04-02
  • 打赏
  • 举报
回复
Date类里提供了时间的操作,使用构造函数Date()生成一个实例得到的是系统的时间,这个时间是以毫秒为单位,从 1970 年 1 月 1 日的 00:00:00.000 即格林威治标准时间,到生产这个Date时相差的毫秒数,Date是一个在JDK1.1中就出现了,所以其中的很多方法都是过时了,基本上没过时的就那么几个,在JDK文档中提到对Date的处理都是改成了DateFormat类,它在java.text包下,基本上是对Date进行格式的转换,具体的方法可以去查文档
logi22 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yami251139 的回复:]
Date是老版本的。。。
calendar是現在用的比較多的了。。。
[/Quote]
对的,习惯用calendar是好事来的。。
logi22 2008-04-02
  • 打赏
  • 举报
回复
Date本质就是一个long数值,从1970年到某个时间的毫秒数,我是这么理解的

所有操作都可以用Date.getTime()得到毫秒数然后做运算。要格式化打印输出则使用SimpleDateFormat。(也可以用SimpleDateFormat来把某个格式的字符串格式化为Date)


package com.test.my;

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDate {

public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date1 = sdf.parse("2008-04-02 17:55:00");
Date date2 = sdf.parse("2008-04-02 18:00:00");

long delay = date2.getTime() - date1.getTime();//间隔的毫秒数

System.out.println("Delay:" + delay / 1000 + "seconds");
} catch (Exception e) {
e.printStackTrace();
}
}
}


sdf.format(Date)可以用来输出"2008-04-01 18:00:00"格式的字符串
dracularking 2008-04-02
  • 打赏
  • 举报
回复
具体用法见api doc
dracularking 2008-04-02
  • 打赏
  • 举报
回复
区别就是Date差不多大部分都deprecated了 取而代之的是Calendar
功能类似的
yami251139 2008-04-02
  • 打赏
  • 举报
回复
Date是老版本的。。。
calendar是現在用的比較多的了。。。
pchhbtm 2008-04-02
  • 打赏
  • 举报
回复
获取Date类中的年、月、日、时、分、秒以及星期可以使用Date类的getYear()、getMonth()、getDate()、
getHours()、getMinutes()、getSeconds()、getDay()方法
不过新版本JDK中已经不再推荐使用这些方法,改由Calender来进行处理
int getDaysBetween(java.util.Calendar d1, java.util.Calendar d2)
{
Calendar begin = d1.after(d2)?d2:d1, end = d1.after(d2)?d1:d2;
int days = end.get(java.util.Calendar.DAY_OF_YEAR) -
begin.get(java.util.Calendar.DAY_OF_YEAR);
int y2 = end.get(java.util.Calendar.YEAR);
if (begin.get(java.util.Calendar.YEAR) != y2)
{
begin = (java.util.Calendar) begin.clone();
do
{
days += begin.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);
begin.add(java.util.Calendar.YEAR, 1);
}
while (begin.get(java.util.Calendar.YEAR) != y2);
}
return days;
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧