您的位置:首页 > 编程语言 > Java开发

019Java 日期操作

2014-11-29 09:37 399 查看
日期操作

1.Date及常用API

1.1java中的时间

java中的时间使用标准类库的Date类表示,是距离一个固定时间点的毫秒数(long类型,可正可负)表达一个特定的时间点。

固定时间点叫纪元(epoch),是UTC时间1970年1月一日 00:00:00

UTC(世界调整时间)和GMT(格林威治时间)一样,是具有一种实际目的的标准时间。

1.2Date类简介

java.util.Date 类封装日期及时间信息

由于千年虫等问题,Date中大多数用于计算的方法已经被Calendar所取代

1.3setTime和getTime方法

/**
* 测试testDateTime方法
*/
@Test
public void testGetDate(){
Date date=new Date();
System.out.println(date);
//输出结果为:Fri Nov 28 13:57:28 CST 2014
//1970年1月1日零时距此刻的毫秒数
long time=date.getTime();
System.out.println(time);
////输出结果为:1417154248386

//增加一天的毫秒数
time+=60*60*24*1000;
date.setTime(time);
<pre name="code" class="java"> System.out.println(date);
//输出结果为:Sat Nov 29 13:57:28 CST 2014

//由此可以看出,date在一天的日期上加了一天


有上述代码可以看出

getTime()方法是用作返回日期从1970-01-01 00:00:00(纪元)到此时此刻的毫秒数

setTime(long time)方法是用作设置一个固定的毫秒数time,返回毫秒数下的日期(Date)对象

1.4Date中的toString方法

Date类重写了toString()方法,用来描述当前对象Date所表示的时间格式如下

System.out.println(date);
//输出结果为:Sat Nov 29 13:57:28 CST 2014

2.SimpleDateFormat
2.1SimpleDateFormat简介

有时我们需要输出或输入一个具有特定格式的时间日期,如(yyyy-MM-dd HH-mm-ss)这样我们可以更好的用来描述日期信息。

java.text.SimpleDateFormat是一个与语言环境有关的方式来格式化和解析日期的类。允许如下:

解析(文本->日期)

格式化(日期->文本)

2.2日期模式匹配字符,如图下:



2.3将Date转换为字符串(格式化)如下代码

/**
* 测试format方法
*/

public void testFormat(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//创建SimpleDateFormat对象
Date date=new Date();
String dateStr=sdf.format(date);
//将日期对象格式化为字符串
System.out.println(dateStr);
//输出结果:2014-11-28 17:18:32
}
2.4将String解析为Date,代码如下
/*
* 测试parse方法
*/
@Test
public void testPause() throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//创建SimpleDateFormat对象
String str="2013-12-25";
//和SimpleDateFormat格式匹配的字符串
Date date=sdf.parse(str);
//将字符串解析为Date类型对象
System.out.println(date);
//输出结果为:Wed Dec 25 00:00:00 CST 2013

}
注意:有异常抛出
3.Calendar

3.1Calendar简介

java.util.Calendar类用于封装日历信息,其主要作用在于方法可以对时间分量进行运算

Calendar是抽象类,其具体的子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(阳历),对应大多数国家的使用的标准日历系统

3.2getInstance方法

Calendar提供的一个方法getInstance,用于获得此类型的一个通用对象。

Calendar的方法getInstance用于返回一个Calendar对象,其日历字段已由当前日期和时间进行了初始化

Calendar c=Calendar.getInstance();

代码如下:

/*
* 测试getInstance方法
*/
@Test
public void testGetInstance(){
Calendar c=Calendar.getInstance();
//输出Calendar的实际类型
System.out.println(c.getClass().getName());
//输出结果:java.util.GregorianCalendar

//getTime()方法返回对应Date对象
System.out.println(c.getTime());
//Fri Nov 28 17:41:17 CST 2014

//创建GregorianCalendar对象
GregorianCalendar c1=new GregorianCalendar(2013,Calendar.DECEMBER,25);
System.out.println(c1.getTime());
//Wed Dec 25 00:00:00 CST 2013
}

 3.3设置日期和时间分量:使用set方法时间分量和日期进行设置,代码如下:
/*
* 测试set方法
*/

public void testSet(){
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2013);
c.set(Calendar.MONTH, Calendar.DECEMBER);
c.set(Calendar.DATE,25);
System.out.println(c.getTime());
//Wed Dec 25 17:53:10 CST 2013

c.set(Calendar.DATE,32);
System.out.println(c.getTime());
//Wed Jan 01 17:53:10 CST 2014
}3.4获取如期及时间分量:使用get(时间分量)方法用于获取时间分量的值
/*
* 测试get方法
*/

public void testGet(){
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,2013);
c.set(Calendar.MONTH, Calendar.DECEMBER);
c.set(Calendar.DATE,25);
int dayOfWeek=c.get(Calendar.DAY_OF_WEEK);
System.out.println(dayOfWeek);
//输出结果:4表示周三,因为在公历中周日为每周的第一天
}3.5getActualMaximum方法:返回日期段的最大值,如下代码:
/*
* 输出某一年每个月的天数
* 输出某一年每个月的周数
*/
@Test
public void testGetActualMaxiMum(){
int year=2013;
Calendar c=Calendar.getInstance();
c.set(Calendar.YEAR,year);
//c.set(Calendar.MONTH,1);
for(int month=Calendar.JANUARY;month<=Calendar.DECEMBER;month++){
c.set(Calendar.MONTH,month)
4000
;
System.out.println(year+"年"+(month+1)+"月有"+c.getActualMaximum(Calendar.DATE)+"天");
System.out.println(year+"年"+(month+1)+"月有"+Calendar.WEEK_OF_MONTH+"周");
}
}
//输出结果如下
//<span style="white-space:pre">			</span>2013年1月有31天
//<span style="white-space:pre">			</span>2013年1月有4周
//<span style="white-space:pre">			</span>2013年2月有31天
//<span style="white-space:pre">			</span>2013年2月有4周
//<span style="white-space:pre">			</span>2013年3月有31天
//<span style="white-space:pre">			</span>2013年3月有4周
//<span style="white-space:pre">			</span>2013年4月有30天
//<span style="white-space:pre">			</span>2013年4月有4周
//<span style="white-space:pre">			</span>2013年5月有31天
//<span style="white-space:pre">			</span>2013年5月有4周
//<span style="white-space:pre">			</span>2013年6月有30天
//<span style="white-space:pre">			</span>2013年6月有4周
//<span style="white-space:pre">			</span>2013年7月有31天
//<span style="white-space:pre">			</span>2013年7月有4周
//<span style="white-space:pre">			</span>2013年8月有31天
//<span style="white-space:pre">			</span>2013年8月有4周
//<span style="white-space:pre">			</span>2013年9月有30天
//<span style="white-space:pre">			</span>2013年9月有4周
//<span style="white-space:pre">			</span>2013年10月有31天
//<span style="white-space:pre">			</span>2013年10月有4周
//<span style="white-space:pre">			</span>2013年11月有30天
//<span style="white-space:pre">			</span>2013年11月有4周
//<span style="white-space:pre">			</span>2013年12月有31天
//<span style="white-space:pre">			</span>2013年12月有4周
3.6add方法:将给定的时间分量加上给定的值,若给定的值为负,则减去给定的值,代码如下:
/*
* 输出一年后在减去三月的日期
*/

public void testAdd(){
Calendar c=Calendar.getInstance();
c.add(Calendar.YEAR,1);
c.add(Calendar.MONTH,-3);
System.out.println("year:"+c.get(Calendar.YEAR));
//year:2015
System.out.println("month:"+(c.get(Calendar.MONTH)+1));
//month:8
System.out.println("date:"+c.get(Calendar.DATE));
//date:28
}

3.7setTime和getTime方法
Date getTime():指使用Date描述Calendar表示日期并返回

  void setTime(Date date):使用Calendar来描述Date日期

代码如下:

/*
* 使用Date表示的日期和使用的Calendar对象表示的日期进行互换
*/

public void testSetTimeAndGetTime(){
Calendar c=Calendar.getInstance();
Date date=new Date();
c.setTime(date);
date=c.getTime();
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  日历