JAVA中常用的与时间有关的操作

日期基本概述

       有关时间的操作中,最常用的就是将时间转化为特定的的格式,如XXXX年XX月XX日,或者是XXXX-XX-XX的格式,或者将字符串转化为日期类型。其中最常用的就是java.text包中的DateFormat类以及DateFormat的子类SimpleDateFormat这两个类以及Calendar类,同时还有java.sql.Date等类主要用于处理数据库中的日期类型的。下面将会分别的,简要的介绍一下每个类的用法。

DateFormat

该类是专门用于时间格式化的。该类在API文档中的定义为:

public abstract class DateFormat extends Format

说明了该类是一个抽象类,根据JAVA的语法规则,只能够使用此类的子类。但是DateFormat提供了2个方法可以将自身实例化的操作

得到时间的日期: static DateFormat getInstance()

得到时间的具体的日期static DateFormat getDateTimeInstance()

具体的用法如下:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class LearnDateFormat {

	public static void main(String[] args) {
		DateFormat df1 = null;
		df1 = DateFormat.getDateInstance();
		System.out.println("DATE:"+df1.format(new Date()));  //得到日期
		DateFormat df2 = null;
		df2 = DateFormat.getDateTimeInstance();
		System.out.println("DATE:"+df2.format(new Date())); //得到日期和时间
	}
	
}

最后的输出结果为:

DATE:2014-5-13 16:26:12

DATE:2014-5-13

通过输出,就可以查出getDateInstance()和getDateTimeInstance()方法的区别了。一个只能够得到当前的日期,而另一个可以得到当前的精确的时间。

SimpleDateFormat

在实际的编码过程中,DateFormat并不经常用,用的更多的是SimpleDateFormat。此类是DateFormat的子类。此类的主要作用是

完成日期的显示格式化的。例如,在开发中将一种日期个是转化成另外一种。同时该类还从父类中继承了parse()的方法,主要是用来将一个字符串转化为一个日期类型。如下:

原始格式:2014-05-1311:15:30.478

        转换格式为:2014年5月13日 11点15分30秒478毫秒。

在SimpleDateFormat中,有几个比较重要且经常使用的方法。

构造方法: SimpleDateFormat(String pattern)

在使用SimpleDateFormat类的时候,在构造方法中必须传入要匹配的模板,否则无法完成日期的转化。

转换: Date parse(String source)throws ParseException (将String转换为Date)

格式化:String Format(Date date)  (将Date转化为指定格式的字符串)

具体的使用方法为:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class LearnDateFormat {

	public static void main(String[] args) {
		String datestr = "2014/5/13 14:22:30.456";		//带转化的字符串
		String pattern1= "yyyy/MM/dd HH:mm:ss.SSS";	
		//设定需要匹配模式,将datestr转换hauntedDate,这种格式一定要与datestr的格式一样,否否则无法转化
		SimpleDateFormat sdf1 = new SimpleDateFormat(pattern1);
		Date date = null;
		try {
			date = sdf1.parse(datestr);      //将datestr转化为指定的格式
		} catch (ParseException e) {
			//假设pattern不是之前的格式,而是 "yyyy-MM-dd HH:mm:ss.SS"由于无法转化,则会报错
			e.printStackTrace();
		}
		String pattern2 = "yyyy年MM月dd日HH时mm分ss秒SS毫秒";
		//将date格式化为String,形式为2014年5月13好14时22分30秒456毫秒
		SimpleDateFormat sdf2 = new SimpleDateFormat(pattern2);
		String datestr2 = sdf2.format(date);
		System.out.println(datestr2);
	}
}	


最后的输出结果为:

2014年05月13日14时22分30秒456毫秒

pattern1的格式必须和需要转化的日期的字符串保持一致,否则就不能将datestr转化为Date类型的。记住这一点非常的重要。

parse()方法主要就是用于将datestr转化为Date类型,而转化所采用的匹配原则就是SimpleDateFormat定义的匹配原则

format就是将一个Date类型的对象转化为指定格式的string类型的变量,如在实例中将Date转化为yyyy年MM月dd日HH时mm分ss秒SS毫秒的格式,此格式也需要使用匹配规则来进行定义。

Calendar

此类主要是用来获得日期中的具体的时间。由于在Date中的getDate()和getDay()、getMonth()等已经被弃用了,API文中中建议使用Calendar来获得日期对象的具体的时间。此类在JAVA的API的文档中的定义是,

public abstract class Calendar extends Object

说明此类是一个抽象类,但是提供了一个实例化的方法。通过方法getInstance()就可以得到实例化的对象。

具体的使用方法如下:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class LearnDateFormat {

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date.toLocaleString());
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		//得到日期的年份
		System.out.println(c.get(Calendar.YEAR));
		//得到当前的月份,默认是从0开始计算
		System.out.println(c.get(Calendar.MONTH));
		//得到当前的是本月的第多少天
		System.out.println(c.get(Calendar.DAY_OF_MONTH));
		//得到当前是本月的第多少个星期
		System.out.println(c.get(Calendar.WEEK_OF_MONTH));
		//得到当前是这个星期的第几天,(默认周日是第一天)
		System.out.println(c.get(Calendar.DAY_OF_WEEK));
	}
}	

在Calendar中还有许多其他的类似的方法,可以查阅API文档来了解其他的方法。本文就不一一进行说明了。所以如果是要获得Date对象中的具体的时间方法,就必须使用到Calendar类了。

总结与时间有关的类

在JAVA的API文档中有许多与时间有关的类,在这里只是简单的说明一下他们之间的基本用途,给自己做一下笔记。方便自己要有的时候查询。

Java.util.Date是一个单独的类,其中java.sql.Date和java.sql.Time和java.sql.Timestamp分别继承Date类,java.sql.Date继承了java.util.Date中的日期部分,java.sql.Time继承了java.util.Date中的时间部分,而java.sql.Timesatmp同时继承了java.util.Date中的时间和日期部分。同时这三个类主要适合数据库中的日期处理有关的类。

Java.text.DateFormat主要是用于日期的格式化。其中比较常用的是该类的子类java.text.SimpleDateFormat类.(在上面的介绍中已经讲解的很清楚了)

Java.util.Calendar主要是用来得到日期中的具体的时间,如月份,星期,年份,分钟等等。Java.util.GregorianCalendar是该类的子类,主要是用来处理各种各样的时区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值