1 / 29

第 6 章 时间、日期和数字

第 6 章 时间、日期和数字. Date 类. Date 类在 java.util 包中。 Date 类构造方法: public Date() // 用本地当前的日期和时间初始化对象。 public Date(long time) // 参数表示构造的日期对象到 1970 年 1 月 1 日 00:00:00 (格林威治时间)之间相隔的毫秒数。 说明: 如本地时区是北京时区,基准时间为 1970 年 1 月 1 日 08 : 00 : 00. Date 类的常用方法: public String toString() // 返回该日期规范的字符串表示。

varian
Download Presentation

第 6 章 时间、日期和数字

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 时间、日期和数字

  2. Date类 • Date类在java.util包中。 • Date类构造方法: • public Date() //用本地当前的日期和时间初始化对象。 • public Date(long time) //参数表示构造的日期对象到1970年1月1日00:00:00(格林威治时间)之间相隔的毫秒数。 说明:如本地时区是北京时区,基准时间为1970年1月1日08:00:00. • Date类的常用方法: • public String toString() //返回该日期规范的字符串表示。 • public long getTime() 返回自1970年1月1日08时(北京时区)以来的毫秒数,可以用于时间计算。

  3. setTime(long) //设置日期表示从1970年1月1日08时起的毫秒数。 • after(date) //测试该日期是否在某指定的日期之后。 • before(Date) //测试该日期是否在某指定的日期之前。 • equals(Object) //比较两个日期.

  4. 例1: import java.util.Date; public class UseDate {public static void main(String[] args) {Date dold = new Date(); long lold = dold.getTime(); System.out.println("循环前系统时间为:" +dold.toString()); int sum = 0; for (int i=0; i<100; i++) {sum += i;} Date dNew = new Date(); long lNew = dNew.getTime(); System.out.println("循环后系统时间为:" +dNew.toString()); System.out.println("循环花费的毫秒数为:" + (lNew - lold)); } }

  5. 程序运行结果:

  6. 例2: import java.util.Date; public class DateDemo {public static void main(String args[]) {Date today=new Date(); System.out.println(today.getTime()); System.out.println("Today's date is:"+today); Date day1=new Date(1140203030304L); System.out.println("Day1's date is:"+day1); if(day1.after(today)) System.out.println("Day1晚于today"); else System.out.println("Day1早于today"); } }

  7. Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。Date对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年。 • 可以用java.text包中DateFormat类的子类SimpleDateFormat来实现对日期对象的格式化。 • 创建一个SimpleDateFormat对象,其构造方法为:public SimpleDateFormat(String pattern) pattern是一些具有特殊含义的字符。(见教材P120)对于patten中的普通字符,如果是ASCII字符集中的字母,必须用单引号字符括起。 • 该对象调用format(Date 对象);按指定的pattern格式来格式化日期对象。

  8. time必须用单引号括起来 例3:import java.util.Date; import java.text.SimpleDateFormat; class Example6_1 { public static void main(String args[]) { Date nowTime=new Date(); System.out.println(nowTime); SimpleDateFormat matter1= new SimpleDateFormat(" 'time':yyyy年MM月dd日E 北京时间"); System.out.println(matter1.format(nowTime)); SimpleDateFormat matter2= new SimpleDateFormat("北京时间:yyyy年MM月dd日HH时mm分ss秒"); System.out.println(matter2.format(nowTime)); Date date1=new Date(1000), date2=new Date(-1000); System.out.println(matter2.format(date1)); System.out.println(matter2.format(date2)); System.out.println(new Date(System.currentTimeMillis())); } } currentTimeMillis()获取从1970年1月1日08时到目前时刻所走过的毫秒数。

  9. Calender类 • Calendar类在java.util包中。 • Calendar类的常用方法 • getInstance()----初始化一个日历对象 • static Calendar getIntance() • set----翻阅日历 • 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,int second) 说明:当参数year取负数时表示公元前。

  10. get----获取有关年份、月份、小时、星期等信息。get----获取有关年份、月份、小时、星期等信息。 public int get(int field) //参数field的有效值由Calendar的静态常量指定 例如: calendar.get(Calendar.MONTH);//返回一个整数,如果该整数是0表示当前日历是在一月,该整数是1表示当前日历是在二月等。 • setTime----设置调用对象的各种日期和时间分量。 final void setTime(Date d) • getTimeInMillis----将时间表示为毫秒。 public long getTimeInMillis() • add(int field,int amount)//将amount加到由field指定的分量

  11. Calendar类定义的一些常用的静态变量: • YEAR //表示日期中的年 • MONTH //表示日期中的月 • DATE //表示日期中的日 • AM_PM //值为0表示上午,为1表示下午 • HOUR //表示小时 • MINUTE //表示分 • SECOND //表示秒 • MILLISECOND //表示毫秒

  12. 例:Calendar类的使用。 import java.util.Calendar; public class CalendarDemo {public static void main(String args[]) {Calendar c=Calendar.getInstance(); display(c); c.set(2007,10,1); c.set(Calendar.HOUR,5); c.set(Calendar.MINUTE,10); c.set(Calendar.SECOND,12); System.out.println("更新后时间:"); display(c); c.add(Calendar.DATE,10); c.add(Calendar.HOUR_OF_DAY,10); System.out.println("调整后时间:"); display(c); }

  13. static voiddisplay(Calendar c) {System.out.print("日期:"); System.out.print(c.get(Calendar.YEAR)+"年"); System.out.print(c.get(Calendar.MONTH)+1+"月"); System.out.print(c.get(Calendar.DATE)+"日"); System.out.print("时间:"); if(c.get(Calendar.AM_PM)==0) System.out.print("AM "); else System.out.print("PM "); System.out.print(c.get(Calendar.HOUR)+":"); System.out.print(c.get(Calendar.MINUTE)+":"); System.out.println(c.get(Calendar.SECOND)); } }

  14. 程序运行结果:

  15. 例:import java.util.*; classExample6_2 {public static void main(String args[]) {Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); String 年=String.valueOf(calendar.get(Calendar.YEAR)), 月=String.valueOf(calendar.get(Calendar.MONTH)+1), 日=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), 星期=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1); int hour=calendar.get(Calendar.HOUR_OF_DAY), minute=calendar.get(Calendar.MINUTE), second=calendar.get(Calendar.SECOND);

  16. System.out.println("现在的时间是:"); System.out.println(""+年+"年"+月+"月"+日+"日 "+ "星期"+星期); System.out.println(""+hour+"时"+minute+"分"+second+"秒"); calendar.set(1962,5,29); long time1962=calendar.getTimeInMillis(); calendar.set(2006,9,1); long time2006=calendar.getTimeInMillis(); long 相隔天数=(time2006-time1962)/(1000*60*60*24); System.out.println("2006年10月1日和1962年6月29日相隔"+相隔天数+"天"); } }

  17. 运行结果:

  18. 例: import java.util.*; class Example6_3 { public static void main(String args[]) { System.out.println(" 日 一 二 三 四 五 六"); Calendar 日历=Calendar.getInstance(); 日历.set(2008,10,1); //将日历翻到2006年12月1日。 int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1; String a[]=new String[星期几+31]; for(int i=0;i<星期几;i++) { a[i]="**"; }

  19. for(int i=星期几,n=1;i<星期几+31;i++) { if(n<=9) a[i]=String.valueOf(n)+" "; else a[i]=String.valueOf(n) ; n++; } for(int i=0;i<a.length;i++) { if(i%7==0) { System.out.println(""); } System.out.print(" "+a[i]); } } }

  20. Math类 • Math是一个final类,含有基本数学运算函数。 • Math类的常用方法: • static double sqrt(double a) // 平方根 • static double pow(double a, double b) // 数a的b次方 • static int round(float a) // 四舍五入 • static long round(double a) // 四舍五入 • static double log(double a) // 对数

  21. static double random( ) // 大于等于0.0小于1.0的随机数 • static double abs(double a) // 绝对值 • static double max(double a, double b) // 最大值 • static double min(double a, double b) // 最小值 • Math类的静态常量: • E:2.7182828284590452354 • PI:3.14159265358979323846

  22. java.text包中的NumberFormat类可对数字进行格式化 • 实例化一个NumberFormat对象 Public static final NumberFormat getInstance() • 该对象调用 public final String format(double number)方法格式化数字number.

  23. 例:程序运行后效果如下图所示。

  24. 程序代码: import java.text.NumberFormat; class Example6_4 { public static void main(String args[]) { double a=Math.sqrt(5); System.out.println("格式化前:"+a); NumberFormat f=NumberFormat.getInstance(); f.setMaximumFractionDigits(7); f.setMinimumIntegerDigits(3); String s=f.format(a); System.out.println("格式化后:"+s);

  25. MyNumberFormat myFormat=new MyNumberFormat(); System.out.println("格式化后:"+myFormat.format(a,4)); System.out.println("得到的随机数:"); int number=8; for(int i=1;i<=20;i++) { int randomNumber=(int)(Math.random()*number)+1; System.out.print(" "+randomNumber); if(i%10==0) System.out.println(""); } } }

  26. class MyNumberFormat { public String format(double a,int n) { String str=String.valueOf(a); int index=str.indexOf("."); String temp=str.substring(index+1); int leng=0; leng=temp.length(); int min=Math.min(leng,n); str=str.substring(0,index+min+1); return str; } }

  27. BigInteger类 • java.math包中的BigInteger类提供任意精度的整数运算。 • 使用构造方法: public BigInteger(String val)构造一个十进制的BigInteger对象。 • BigInteger类的常用方法 • public BigInteger add(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的和。 • public BigInteger subtract(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的差。 • public BigInteger multiply(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的积。 • public BigInteger divide(BigInteger val) 返回当前大整数对象与参数指定的大整数对象的商。

  28. 实训十二 时间、日期和数字 上机目的:巩固掌握Date类、Calendar类、Math类的应用。 上机内容: 1、调试上课所讲例题 2、试编写一个应用程序,生成100个随机数,统计小于和不小于0.5的数各有多少并统计总共花费多少毫秒。 3、教材P126的第2、3、5题 作业3:将第2题及教材P126的第2、3、5题的代码写到实验报告本上。

More Related