日期操作类(Date、Calendar)
Date类
Date类是一个比较常用的类,但是其操作的日期格式会有一些不符合个人的要求,而如果想进一步取得自己想要的时间,则可以使用Calendar类。
代码示例:import java.util.Date; public class DateDemo01 { public static void main(String args[]){ Date date=new Date(); System.out.println("当前时间:"+date); //程序输出: //当前时间:Fri Aug 05 11:07:46 CST 2011 } }
很显然Date类虽然可以直接打印,但是其时间格式并不是我们想要的,那么可以使用Calendar类。
Calendar类
Calendar类可以取得时间精确到毫秒,但是,这个类本身是一个抽象类,如果要想使用一个抽象类,则必须依靠对象的多态性,通过子类进行父类的实例化操作,calendar的子类是GregorianCalendar
在Calendar类中有一系列的常量,在其子类GregorianCalendar类中有get()方法。代码如下: import java.util.*; public class DateDemo02 { public static void main(String args[]){ Calendar calendar=new GregorianCalendar(); System.out.println("YEAR: " + calendar.get(Calendar.YEAR)); System.out.println("MONTH: " + calendar.get(Calendar.MONTH)); System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR)); System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH)); System.out.println("DATE: " + calendar.get(Calendar.DATE)); System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR)); System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK)); System.out.println("DAY_OF_WEEK_IN_MONTH: " + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM)); System.out.println("HOUR: " + calendar.get(Calendar.HOUR)); System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE)); System.out.println("SECOND: " + calendar.get(Calendar.SECOND)); System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND)); System.out.println("ZONE_OFFSET: " + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); System.out.println("DST_OFFSET: " + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); } }
日期操作类(DateFormat、SimpleDateFormat)
DateFormat类
此类是一个日期格式化的类,专门格式化日期的操作,因为java.util.Date类本身就已经包含了完整的日期,所以只需要将此日期按照格式化好的格式进行操作就可以了。
代码如下:(注意观察DateFormat类中的getDateInstance()和getDateTimeFormat()两个方法)
import java.util.Date; import java.text.DateFormat; import java.text.Format; public class DateDemo03 { public static void main(String args[]){ DateFormat df1=null; //声明一个DateFormat DateFormat df2=null; //声明一个DateFormat df1=DateFormat.getDateInstance(); //得到日期的DateFormat对象 df2=DateFormat.getDateTimeInstance(); //得到日期时间的DateFormat对象 System.out.println("DATE:"+df1.format(new Date())); //输出DateFormat内部定义好格式的日期格式 System.out.println("DATETIME:"+df2.format(new Date())); //输出DateFormat内部定义好格式的日期时间格式 } }
SimpleDateFormat类
在使用SimDateFormat类的时候,必须注意的是在构造对象时要传入匹配的模板。
构造方法:public SimpleDateFormat(String pattern)
转换:public Date parse(String source) throws ParseExceptioà此时取得是全部的时间数。
格式化:public final String format(Date date)à将时间格式化为指定好多的字符串格式。
import java.text.* ; import java.util.* ; public class DateDemo05{ public static void main(String args[]){ String strDate = "2008-10-19 10:11:30.345" ; // 准备第一个模板,从字符串中提取出日期数字 String pat1 = "yyyy-MM-dd HH:mm:ss.SSS" ; // 准备第二个模板,将提取后的日期数字变为指定的格式 String pat2 = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒" ; SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ; // 实例化模板对象 SimpleDateFormat sdf2 = new SimpleDateFormat(pat2) ; // 实例化模板对象 Date d = null ; try{ d = sdf1.parse(strDate) ; // 将给定的字符串中的日期提取出来 }catch(Exception e){ // 如果提供的字符串格式有错误,则进行异常处理 e.printStackTrace() ; // 打印异常信息 } System.out.println(sdf2.format(d)) ; // 将日期变为新的格式 } };
示例:通过Calendar获得当前时间
import java.text.* ; import java.util.* ; class DateTime { private Calendar calendar=null; public DateTime(){ //通过构造方法实例化Calendar对象 calendar=new GregorianCalendar(); } public String getDate(){ StringBuffer buf=new StringBuffer(); //实例化StringBuffer对象 buf.append(calendar.get(Calendar.YEAR)).append("年");; //输出年 buf.append(this.addZero(calendar.get(Calendar.MONTH)+1,2)).append("月"); //输出月份 同时进行补0和加1操作 return buf.toString(); } public StringBuffer addZero(int month,int len){ //如果月份是1位数,则补0 StringBuffer buf=new StringBuffer(); buf.append(month); while(buf.length()<len){ buf.insert(0,"0"); } return buf; } } public class DateDemo05{ public static void main(String args[]){ DateTime date=new DateTime(); System.out.println(date.getDate()); //打印当前年月 } };
Math与Random类
具体内容
表示数学操作,比如平方根、四舍五入等
public class MathDemo01{ public static void main(String args[]){ // Math类中的方法都是静态方法,直接使用“类.方法名称()”的形式调用即可 System.out.println("求平方根:" + Math.sqrt(9.0)) ; System.out.println("求两数的最大值:" + Math.max(10,30)) ; System.out.println("求两数的最小值:" + Math.min(10,30)) ; System.out.println("2的3次方:" + Math.pow(2,3)) ; System.out.println("四舍五入:" + Math.round(33.6)) ; System.out.println("四舍五入:" + Math.round(-1.6)) ; //-2 System.out.println("四舍五入:" + Math.round(-1.5)) ; //-1 } };
注意:Math.round()方法中,如果参数是正数,则会进行四舍五入的操作,但是如果是负数的话负数的十分位从6开始进行接近较近的负数。
Random类一的主要功能是产生随机数,可以产生一个指定范围的随机数,Random类定义在java.util包中
import java.util.Random; public class RandomDemo01{ public static void main(String args[]){ Random r=new Random(); //实例化Random对象 System.out.println(r.nextInt(100)); //产生的随机数都小于100 } };