java日期相关类实例详解

时间:2021-10-20 00:41:29

一、Date类

类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。

Date类中很多方法已经过时,使用Calendar来替代。

常用方法有

long getTime()
void setTime(long time)

java" id="highlighter_654069">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class T01Date {
  public static void main(String[] args) {
    //getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响
    //date值受setTime()的影响
    Date date=new Date();
    long current=date.getTime();
    System.out.println(current);//1472002479966
    System.out.println(date);//Wed Aug 24 09:34:39 CST 2016
    long time=current+1000*60*60*24;//时间设置为明日此时
    date.setTime(time);
    System.out.println(date.getTime());//1472002479966
    System.out.println(current);//1472002479966
    System.out.println(date);// Thu Aug 25 09:34:39 CST 2016
  }
}

二、SimpleDateFormat

SimpleDateFormat根据特定的日期格式在Date和字符串之间转换

常用方法

String format(Date date):将日期按照指定格式转换成字符串
Date parse(String str):将字符串按照指定格式转换成Date

可以用来指定格式的字符

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * java.text.SimpleDateFormat
 * 该类可以根据一个指定的日期格式将Date于String
 * 之间相互转换
 * @author zc
 *
 */
public class T02SimpleDateFormat {
  public static void main(String[] args) throws ParseException {
    Date now =new Date();
    //2016-08-12 09:55:23
    //yyyy-MM-dd hh:ss:mm
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh时ss分mm秒");
    String str = sdf.format(now);
    System.out.println(str);
    //a 居然能区分上下午汉字
    String strDate="2012年12月20日下午12点20分30秒";
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒");
    Date date=sdf2.parse(strDate);
    System.out.println(date);
  }
}

三、Calendar

java.util.Calendar是抽象类,主要用来对时间分量进行计算。

常用方法

(1)Date和Calendar之间的转换

?
1
2
3
4
5
6
7
8
9
10
11
12
13
  //默认创建出来的Calendar的实现类表示当前系统时间
    Calendar c=Calendar.getInstance();
    //将Calendar转换为Date
    Date date=c.getTime();
    //Date->Calendar
    /*
     * void setTime(Date date)
     * 该方法可以使当前Calendar表示给定的
     * Date所表示的时间
     * */
    c.setTime(date);
  }
}

(2)getInstance()方法

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()用来获取Calendar类型的实例

(3)get(int field)方法获取时间分量

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Calendar;
/**
 * Calendar提供了获取各个时间分量的值的方法
 * @author zc
 */
public class T05Calendar2 {
  public static void main(String[] args) {
    Calendar c=Calendar.getInstance();
    //获取年
    int year=c.get(Calendar.YEAR);
    System.out.println("year:"+year);//2016
    //获取月:月从0开始!!!,0表示一月
    int month=c.get(Calendar.MONTH);
    System.out.println("month:"+month);//7
    /*
     * 和天相关的时间分量
     * DATE,DAY_OF_MONTH:是一致的,表示月中的第几天
     * DAY_OF_YEAR:表示年中的天
     * DAY_OF_WEEK:表示周中的天
     *
     * */
    System.out.println(c.get(Calendar.DATE));
    System.out.println(c.get(Calendar.DAY_OF_MONTH));
    System.out.println(c.get(Calendar.DAY_OF_YEAR));
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
    int dow=c.get(Calendar.DAY_OF_WEEK)-1;
    String[] data={"日","一","二","三","四","五","六"};
    System.out.println("周"+data[dow]);
    //获取小时,分钟,秒   HOUR_OF_DAY:24小时  HOUR:12小时 
    System.out.println(c.get(Calendar.HOUR_OF_DAY));//14
    System.out.println(c.get(Calendar.HOUR));//2
    System.out.println(c.get(Calendar.MINUTE));
    System.out.println(c.get(Calendar.SECOND));
  }
}

(4)set()方法设置时间分量

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 设置时间分量
 * @author zc
 *
 */
public class T06Calendar3 {
  public static void main(String[] args){
    //表示2008-08-08 20:08:08
    //设置年
    Calendar c=Calendar.getInstance();
    c.set(Calendar.YEAR,2008);
    //设置月,月从0开始
    c.set(Calendar.MONTH,Calendar.AUGUST);
    //设置日
    c.set(Calendar.DATE, 8);
    //设置时
    c.set(Calendar.HOUR_OF_DAY,20);
    //设置分
    c.set(Calendar.SECOND,8);
    //设置秒
    c.set(Calendar.MINUTE,8);
    System.out.println(c.getTime());
    //!!!设置的时间分量超出后,会自行进位
  }
}

(5)add()方法在当前时间分量基础上修改时间分量

(6)getActualMaximum()获取某个时间分量所允许的最大值

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * 获取某个时间分量所允许的最大值
 * @author zc
 */
public class T07Calendar4 {
  public static void main(String[] args) {
    Calendar c=Calendar.getInstance();
    //查看当月共多少天
    int days=c.getActualMaximum(Calendar.DAY_OF_MONTH);
    System.out.println(days);
    //查看今年多少天
    int doy=c.getActualMaximum(Calendar.DAY_OF_YEAR);
    System.out.println(doy);
    int t=c.getActualMaximum(Calendar.MINUTE);
    System.out.println(t);
  }
}

四、Date、SimpleDateFormat和Calendar的一个综合实例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Test
  public void test01() throws ParseException{
    //要求用户输入一个日期,计算后,指定格式输出日期
    /*String--SimpleDateFormat()-->Date
    Date-->Calendar
    使用Calendar进行相应计算
    Calendar-->Date
    Date--SimpleDateFormat-->String
    */
    String input="2013-03-26";
     
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    Date date=sdf.parse(input);
    Calendar c=Calendar.getInstance();
    //set(),与add()
    c.setTime(date);
    c.add(Calendar.YEAR,1);
    c.set(Calendar.MONTH,0);
    c.set(Calendar.DAY_OF_WEEK,1);
     
    date=c.getTime();
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒");
    String strTime=sdf2.format(date);
    System.out.println(strTime);
  }

总结

以上就是本文关于java日期相关类实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

原文链接:http://blog.csdn.net/kaishizhangcheng/article/details/52416262