资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第章时间、日期和数字 n n6.1 Date类类n n6.2 Calendar Calendar类类n n6.3 Math类类n n6.4 BigInteger 类类 Java I 6Java I 6时间日期数字时间日期数字.1 Date类类 n nDate类在java.util包中。使用Date类的无参数构造方法创建的对象可以获取本地当前时间。Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。例如:Sat Apr 28 21:59:38 CST 2001 。 Java I 6Java I 6时间日期数字时间日期数字n n可以使用DataFormat的子类SimpleDateFormat来实现时期的格式化。SimpleDateFormat有一个常用构造方法: public SimpleDateFormat(String pattern)public SimpleDateFormat(String pattern)。n n该构造方法可以用参数pattern指定的格式创建一个对象 .Java I 6Java I 6时间日期数字时间日期数字n npatternpattern中应当含有一些特殊意义字符,中应当含有一些特殊意义字符,这些特殊的字符被称做这些特殊的字符被称做元字符元字符元字符元字符,例如:,例如:n ny y或或yy yy 表示用表示用2 2位数字输出年份;位数字输出年份;yyyyyyyy表示用表示用4 4为数字输出年份。为数字输出年份。n nM M 或或MM MM 表示用表示用2 2位数字或文本输出位数字或文本输出月份,如果想用汉字输出月份,月份,如果想用汉字输出月份,patternpattern中应连续包含至少中应连续包含至少3 3个个MM,如:,如:MMMMMM。n nd d 或或dd dd 表示用表示用2 2为数字输出日。为数字输出日。n nH H或或HH HH 表示用两位数字输出小时。表示用两位数字输出小时。n nmm或或mm mm 表示用两位数字输出分。表示用两位数字输出分。n ns s或或ss ss 表示用两位数字输出秒。表示用两位数字输出秒。n nE E 表示用字符串输出星期。表示用字符串输出星期。Java I 6Java I 6时间日期数字时间日期数字n n计算机时间的计算机时间的计算机时间的计算机时间的“ “公元公元公元公元” ”设置在设置在设置在设置在19701970年年年年1 1月月月月1 1日日日日0 0时(格林威治时间),据此时(格林威治时间),据此时(格林威治时间),据此时(格林威治时间),据此可以使用可以使用可以使用可以使用DateDate带参数的构造方法:带参数的构造方法:带参数的构造方法:带参数的构造方法:Date(long time)Date(long time) 例:例: Date date1=new Date(1000); Date date1=new Date(1000); Date date2=new Date(-1000); Date date2=new Date(-1000); 此时,此时,date1date1的时间就是的时间就是19701970年年0101月月0101日日0808时时0000分分0101秒,秒,date2date2的时间就的时间就是是19701970年年0101月月0101日日0707时时5959分分5959秒。秒。n nSystemSystem类的静态方法类的静态方法类的静态方法类的静态方法public long currentTimeMillispublic long currentTimeMillis() ()也可获得系统的当前时间。也可获得系统的当前时间。也可获得系统的当前时间。也可获得系统的当前时间。 这是从这是从19701970年年0101月月0101日日0000时时0000分分0000秒到目秒到目前时刻所走过的毫秒数。前时刻所走过的毫秒数。Java I 6Java I 6时间日期数字时间日期数字例:例:import java.util.*;import java.util.*;import java.text.SimpleDateFormat;import java.text.SimpleDateFormat;public class TestDatepublic class TestDatepublic static void main(String args)public static void main(String args)Date nowtime=new Date();Date nowtime=new Date();System.out.println(nowtime);System.out.println(nowtime);SimpleDateFormat matter1=SimpleDateFormat matter1=new SimpleDateFormat(time:yyyynew SimpleDateFormat(time:yyyy年年年年MMMM月月月月dddd日日日日 E E 北京时间北京时间北京时间北京时间););System.out.println(matter1.format(nowtime);System.out.println(matter1.format(nowtime);SimpleDateFormat matter2=SimpleDateFormat matter2=new SimpleDateFormat(new SimpleDateFormat(北京时间:北京时间:北京时间:北京时间:yyyyyyyy年年年年MMMM月月月月dddd日日日日HHHH时时时时mmmm分分分分ssss秒秒秒秒););System.out.println(matter2.format(nowtime);System.out.println(matter2.format(nowtime);Date date1=new Date(1000),date2=new Date(-1000);Date date1=new Date(1000),date2=new Date(-1000);System.out.println(matter2.format(date1);System.out.println(matter2.format(date1);System.out.println(matter2.format(date2);System.out.println(matter2.format(date2);System.out.println(new Date(System.currentTimeMillis();System.out.println(new Date(System.currentTimeMillis(); 屏幕上输出的屏幕上输出的结果是结果是: ?Java I 6Java I 6时间日期数字时间日期数字6.2 Calendar类类n nCalendarCalendar类在类在java.utiljava.util包中。使用包中。使用CalendarCalendar类的类的staticstatic方法方法getInstance()getInstance()可以初始化一个可以初始化一个日历对象,如:日历对象,如:n nCalendar calendar= calendar.getInstance();Calendar calendar= calendar.getInstance();n n然后,然后,calendarcalendar对象可以调用方法:对象可以调用方法:set(int year,int month,int date)set(int year,int month,int date)set(int year,int month,int date,int hour,int minute)set(int year,int month,int date,int hour,int minute)set(int year,int month, int date, int hour, int minute,int set(int year,int month, int date, int hour, int minute,int second)second)将日历翻到任何一个时间,当参数将日历翻到任何一个时间,当参数yearyear取负数取负数时表示公元前。时表示公元前。Java I 6Java I 6时间日期数字时间日期数字n n calendar calendar对象调用方法:对象调用方法: public int get(int field)public int get(int field)可以获取有关年份、月份、小时、星期可以获取有关年份、月份、小时、星期等信息,参数等信息,参数fieldfield的有效值由的有效值由CalendarCalendar的静态常量指定,例如:的静态常量指定,例如:calendar.get(Calendar.MONTH);calendar.get(Calendar.MONTH);返回一个整数,如果该整数是返回一个整数,如果该整数是0 0表示当表示当前日历是在一月,该整数是前日历是在一月,该整数是1 1表示当表示当前日历是在二月等。前日历是在二月等。n n日历对象调用日历对象调用public long getTimeInMillis()public long getTimeInMillis()可以将时间表示为毫秒。可以将时间表示为毫秒。 Java I 6Java I 6时间日期数字时间日期数字例:例:import java.util.*;import java.util.*;import java.text.SimpleDateFormat;import java.text.SimpleDateFormat;class TestCalendarclass TestCalendarpublic static void main(String args)public static void main(String args)Calendar cal=Calendar.getInstance();Calendar cal=Calendar.getInstance();cal.setTime(new Date();cal.setTime(new Date();String year=String.valueOf(cal.get(Calendar.YEAR),String year=String.valueOf(cal.get(Calendar.YEAR), month=String.valueOf(cal.get(Calendar.MONTH)+1), month=String.valueOf(cal.get(Calendar.MONTH)+1), day=String.valueOf(cal.get(Calendar.DAY_OF_MONTH), day=String.valueOf(cal.get(Calendar.DAY_OF_MONTH), week=String.valueOf(cal.get(Calendar.DAY_OF_WEEK)-1); week=String.valueOf(cal.get(Calendar.DAY_OF_WEEK)-1);int hour=cal.get(Calendar.HOUR_OF_DAY),int hour=cal.get(Calendar.HOUR_OF_DAY), minute=cal.get(Calendar.MINUTE), minute=cal.get(Calendar.MINUTE), second=cal.get(Calendar.SECOND); second=cal.get(Calendar.SECOND); System.out.println( System.out.println(现在的时间是:现在的时间是:现在的时间是:现在的时间是:);); System.out.println(+year+ System.out.println(+year+年年年年+month+month+月月月月+day+day+日日日日+星期星期星期星期+week);+week); System.out.println(+hour+ System.out.println(+hour+时时时时+minute+minute+分分分分+second+second+秒秒秒秒);); cal.set(1985,5,29); cal.set(1985,5,29); / /将日历翻到将日历翻到将日历翻到将日历翻到19851985年年年年6 6月月月月2929日日日日 long time1985=cal.getTimeInMillis(); long time1985=cal.getTimeInMillis(); cal.set(2009,9,29); cal.set(2009,9,29); long time2009=cal.getTimeInMillis(); long time2009=cal.getTimeInMillis(); long day_num=(time2009-time1985)/(1000*60*60*24); long day_num=(time2009-time1985)/(1000*60*60*24); System.out.println(2006 System.out.println(2006年年年年1010月月月月2929日和日和日和日和19621962年年年年6 6月月月月2929日相隔日相隔日相隔日相隔+day_num+day_num+天天天天);); 屏幕上输出的屏幕上输出的结果是结果是: ?Java I 6Java I 6时间日期数字时间日期数字再例:再例:import java.util.*;import java.util.*;class CalendarPageclass CalendarPagepublic static void main(String args)public static void main(String args)System.out.println( System.out.println( 日日日日 一一一一 二二二二 三三三三 四四四四 五五五五 六六六六););Calendar cal=Calendar.getInstance();Calendar cal=Calendar.getInstance();cal.set(2009,9,1); cal.set(2009,9,1); / /将日历放到将日历放到将日历放到将日历放到0909年年年年1010月月月月1 1日日日日int week=cal.get(Calendar.DAY_OF_WEEK)-1;int week=cal.get(Calendar.DAY_OF_WEEK)-1;String a=new Stringweek+31; String a=new Stringweek+31; / /存放号码的一维数组存放号码的一维数组存放号码的一维数组存放号码的一维数组for(int i=0;iweek;i+)for(int i=0;iweek;i+)ai=*;ai=*;for(int i=week,n=1;iweek+31;i+)for(int i=week,n=1;iweek+31;i+)if(n=9)if(n=9) ai=String.valueOf(n)+ ; ai=String.valueOf(n)+ ;elseelse ai=String.valueOf(n); ai=String.valueOf(n);n+;n+; for(int i=0;ia.length;i+)for(int i=0;ia.length;i+)if(i%7=0)if(i%7=0) System.out.println(); System.out.println();System.out.print( +ai);System.out.print( +ai); 输出上述日历页输出上述日历页如何编程实现如何编程实现 ?Java I 6Java I 6时间日期数字时间日期数字6.3 Math类类n n在编写程序时,可能需要计算一个数在编写程序时,可能需要计算一个数的平方根、绝对值、获取一个随机数的平方根、绝对值、获取一个随机数等等。等等。java.langjava.lang包中的类包含许多用包中的类包含许多用来进行科学计算的类方法,这些方法来进行科学计算的类方法,这些方法可以直接通过类名调用。另外,可以直接通过类名调用。另外,MathMath类还有两个静态常量,类还有两个静态常量,E E和和PIPI,它们,它们的值分别是:的值分别是: 2.704523542.70452354和和 3.1493238463.149323846。Java I 6Java I 6时间日期数字时间日期数字Math类常用方法 n npublic static double abs(double a) public static double abs(double a) 返回返回a a的绝对值。的绝对值。n npublic static double max(double a,double b) public static double max(double a,double b) 返回返回a a、b b的最大值。的最大值。n npublic static double min(double a,double b) public static double min(double a,double b) 返回返回a a、b b的最小值。的最小值。n npublic static double random() public static double random() 产生一个产生一个0 0到到1 1之间的之间的随机数(不包括随机数(不包括0 0和和1 1)。)。n npublic static double pow(double a,double b) public static double pow(double a,double b) 返回返回a a的的b b次幂。次幂。n npublic static double sqrt(double a) public static double sqrt(double a) 返回返回a a的平方根。的平方根。n npublic static double log(double a) public static double log(double a) 返回返回a a的对数。的对数。n npublic static double sin(double a) public static double sin(double a) 返回正弦值。返回正弦值。n npublic static double asin(double a) public static double asin(double a) 返回反正弦值。返回反正弦值。 Java I 6Java I 6时间日期数字时间日期数字对数字结果格式化 n n怎样将怎样将3.14159263.1415926输出显示为:输出显示为:003.1416003.1416,这需,这需要用到要用到java.textjava.text包中的包中的NumberFormatNumberFormat类。类。 实例化实例化NumberFormatNumberFormat对象调用类方法:对象调用类方法: public static final NumberFormat getInstance() public static final NumberFormat getInstance() 格式化数字调用方法:格式化数字调用方法: public final String format(double numer) public final String format(double numer)n nNumberFormatNumberFormat类有如下常用方法:类有如下常用方法:l lpublic void setMaximumFractionDigits(int newValue)public void setMaximumFractionDigits(int newValue)l lpublic void setMinimumFractionDigits(int newValue)public void setMinimumFractionDigits(int newValue)l lpublic void setMaximumIntegerDigits(int newValue)public void setMaximumIntegerDigits(int newValue)l lpublic void setMinimumIntegerDigits(int newValue)public void setMinimumIntegerDigits(int newValue)Java I 6Java I 6时间日期数字时间日期数字6.4 BigInteger类类n n程序有时需要处理大整数,java.math包中的BigInteger类提供任意精度的整数运算。可以使用构造方法: public BigInteger(String val)构造一个十进制的BigInteger对象。n n注意:注意:当字符串val中含有非数字字符时,则发生NumberFormatException异常Java I 6Java I 6时间日期数字时间日期数字BigInteger类的常用方法 n npublic BigInteger add(BigInteger val) public BigInteger add(BigInteger val) 返回返回当前大整数对象与参数指定的大整数对象的当前大整数对象与参数指定的大整数对象的和。和。n npublic BigInteger subtract(BigInteger val) public BigInteger subtract(BigInteger val) 返回当前大整数对象与参数指定的大整数对返回当前大整数对象与参数指定的大整数对象的差。象的差。n npublic BigInteger multiply(BigInteger val) public BigInteger multiply(BigInteger val) 返返回当前大整数对象与参数指定的大整数对象回当前大整数对象与参数指定的大整数对象的积。的积。n npublic BigInteger divide(BigInteger val) public BigInteger divide(BigInteger val) 返返回当前大整数对象与参数指定的大整数对象回当前大整数对象与参数指定的大整数对象的商。的商。n npublic BigInteger remainder(BigInteger val) public BigInteger remainder(BigInteger val) 返回当前大整数对象与参数指定的大整数对返回当前大整数对象与参数指定的大整数对象的余。象的余。Java I 6Java I 6时间日期数字时间日期数字BigInteger类的常用方法(续) n npublic int compareTo(BigInteger val) public int compareTo(BigInteger val) 返回返回当前大整数对象与参数指定的大整数对象的当前大整数对象与参数指定的大整数对象的比较结果:比较结果:1 1、-1-1或或0 0。n npublic BigInteger abs(BigInteger val) public BigInteger abs(BigInteger val) 返回返回当前大整数对象的绝对值。当前大整数对象的绝对值。n npublic BigInteger pow(int exponent) public BigInteger pow(int exponent) 返回当返回当前大整数对象的前大整数对象的exponentexponent次幂。次幂。n npublic String toString() public String toString() 返回当前大整数对返回当前大整数对象十进制的字符串表示。象十进制的字符串表示。n npublic String toString(int p) public String toString(int p) 返回当前大整返回当前大整数对象数对象p p进制的字符串表示。进制的字符串表示。例:计算例:计算1+21+2!+3+3!+.+.前前3030项之和。项之和。Java I 6Java I 6时间日期数字时间日期数字例:import java.math.*;import java.math.*;public class TestBigIntegerpublic class TestBigIntegerpublic static void main(String args)public static void main(String args)BigInteger sum=new BigInteger(0),BigInteger sum=new BigInteger(0), xiang=new BigInteger(1), xiang=new BigInteger(1), ONE=new BigInteger(1), ONE=new BigInteger(1), i=ONE, i=ONE, m=new BigInteger(30); m=new BigInteger(30);while(i.compareTo(m)=0)while(i.compareTo(m)=0)sum=sum.add(xiang);sum=sum.add(xiang);i=i.add(ONE);i=i.add(ONE);xiang=xiang.multiply(i);xiang=xiang.multiply(i); System.out.println(sum);System.out.println(sum); 屏幕上输出的屏幕上输出的结果是结果是: ?Java I 6Java I 6时间日期数字时间日期数字
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号