一、Date类
类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。
Date类中很多方法已经过时,使用Calendar来替代。
常用方法有
long getTime()
void setTime(long time)
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