【JAVA常用类演示】

 一、java.lang.System类。

public final class Systemextends Object

 

 

该类包含一些有用的类字段和方法。它不能被实例化。

System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

1. currentTimeMillis方法。

该方法返回当前系统时间的毫秒值。

long currentTime=System.currentTimeMillis();
        System.out.println(currentTime);//获取当前时间到1970.1.1 午夜的毫秒值。

2.重点方法:getProperties、getProperty与setProperty方法。

public static Properties getProperties()
public static String getProperty(String key)
public static String getProperty(String key,String def)

 

 

 

 

public static void setProperties(Properties props)

 

 

前三个方法是用于获取系统属性的方法,第一个方法是获取全部属性的方法,第二个方法和第三个方法是根据key获取某一种系统属性的方法。

第四个方法是向系统属性集中添加指定的系统属性(键值对)。

Properties是HashTable的子类,所以它存放的也是键值对。但是它不带有泛型,而且有自己的遍历方式:

通过stringPropertyName()方法获得键的Set集合。

public Set<String> stringPropertyNames()

 

 

通过getProperty方法根据键获得值。

 String getProperty(String key)
          用指定的键在此属性列表中搜索属性。
 String getProperty(String key, String defaultValue)
          用指定的键在属性列表中搜索属性。

示例代码:

 1 package p01.OftenUseClass.p01.SystemDemo;
 2 
 3 import java.util.Properties;
 4 import java.util.Set;
 5 
 6 public class SystemDemo {
 7 
 8     public static void main(String[] args) {
 9         //currentMillisDemo();
10         getPropertiesDemo();
11         newLine();
12         getSinglePropertyDemo();
13         newLine();
14         setPropertyDemo();
15     }
16 
17     private static void newLine() {
18         for(int i=1;i<=100;i++)
19         System.out.print("-");
20         System.out.println();
21     }
22 
23     private static void setPropertyDemo() {
24         System.setProperty("mykey", "myvalue");
25         getPropertiesDemo();
26     }
27 
28     /*
29      * 获取当前系统的一个属性
30      */
31     private static void getSinglePropertyDemo() {
32         String file_seperator=System.getProperty("file.separator");
33         System.out.println("文件分隔符是:"+file_seperator);
34     }
35 
36     /*
37      * 获取当前系统属性。
38      */
39     private static void getPropertiesDemo() {
40         Properties pro=System.getProperties();
41         Set<String>set=pro.stringPropertyNames();
42         for(String key:set)
43         {
44             String value=pro.getProperty(key);
45             System.out.println(key+":   "+value);
46         }
47     }
48 
49     /*
50      * 获取当前时间。
51      */
52     private static void currentMillisDemo() {
53         long currentTime=System.currentTimeMillis();
54         System.out.println(currentTime);//获取当前时间到1970.1.1 午夜的毫秒值。
55     }
56 
57 }
View Code

运行结果:

  1 java.runtime.name:   Java(TM) SE Runtime Environment
  2 sun.boot.library.path:   C:\Program Files\Java\jre8\bin
  3 java.vm.version:   25.0-b70
  4 java.vm.vendor:   Oracle Corporation
  5 java.vendor.url:   http://java.oracle.com/
  6 path.separator:   ;
  7 java.vm.name:   Java HotSpot(TM) Client VM
  8 file.encoding.pkg:   sun.io
  9 user.script:   
 10 user.country:   CN
 11 sun.java.launcher:   SUN_STANDARD
 12 sun.os.patch.level:   Service Pack 1
 13 java.vm.specification.name:   Java Virtual Machine Specification
 14 user.dir:   E:\Eclipse SE 工作空间\IOStream
 15 java.runtime.version:   1.8.0-b132
 16 java.awt.graphicsenv:   sun.awt.Win32GraphicsEnvironment
 17 java.endorsed.dirs:   C:\Program Files\Java\jre8\lib\endorsed
 18 os.arch:   x86
 19 java.io.tmpdir:   C:\Users\KUANGD~1\AppData\Local\Temp\
 20 line.separator:   
 21 
 22 java.vm.specification.vendor:   Oracle Corporation
 23 user.variant:   
 24 os.name:   Windows 7
 25 sun.jnu.encoding:   GBK
 26 java.library.path:   C:\Program Files\Java\jre8\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre8/bin/client;C:/Program Files/Java/jre8/bin;C:/Program Files/Java/jre8/lib/i386;D:\MyPHPEnvironment\Apache\bin;D:\Android开发\adt-bundle-windows-x86-20140321\adt-bundle-windows-x86-20140321\sdk\platform-tools;D:\Android开发\adt-bundle-windows-x86-20140321\adt-bundle-windows-x86-20140321\sdk\tools;c:\Windows\System32;C:\Program Files\Java\jdk1.8.0\bin;C:\Program Files\Java\jdk1.8.0\jre\bin;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\MySQL\MySQL Utilities 1.3.5\;D:\masm;D:\应用程序扩展\VC++ 6.0\Tools\WinNT;D:\应用程序扩展\VC++ 6.0\MSDev98\Bin;D:\应用程序扩展\VC++ 6.0\Tools;D:\应用程序扩展\VC98\bin;C:\Program Files\SSH Communications Security\SSH Secure Shell;D:\Program Files\Eclipse SE\eclipse;;.
 27 java.specification.name:   Java Platform API Specification
 28 java.class.version:   52.0
 29 sun.management.compiler:   HotSpot Client Compiler
 30 os.version:   6.1
 31 user.home:   C:\Users\kuangdaoyizhimei
 32 user.timezone:   
 33 java.awt.printerjob:   sun.awt.windows.WPrinterJob
 34 file.encoding:   GBK
 35 java.specification.version:   1.8
 36 user.name:   kuangdaoyizhimei
 37 java.class.path:   E:\Eclipse SE 工作空间\IOStream\bin
 38 java.vm.specification.version:   1.8
 39 sun.arch.data.model:   32
 40 java.home:   C:\Program Files\Java\jre8
 41 sun.java.command:   p01.OftenUseClass.p01.SystemDemo.SystemDemo
 42 java.specification.vendor:   Oracle Corporation
 43 user.language:   zh
 44 awt.toolkit:   sun.awt.windows.WToolkit
 45 java.vm.info:   mixed mode, sharing
 46 java.version:   1.8.0
 47 java.ext.dirs:   C:\Program Files\Java\jre8\lib\ext;C:\windows\Sun\Java\lib\ext
 48 sun.boot.class.path:   C:\Program Files\Java\jre8\lib\resources.jar;C:\Program Files\Java\jre8\lib\rt.jar;C:\Program Files\Java\jre8\lib\sunrsasign.jar;C:\Program Files\Java\jre8\lib\jsse.jar;C:\Program Files\Java\jre8\lib\jce.jar;C:\Program Files\Java\jre8\lib\charsets.jar;C:\Program Files\Java\jre8\lib\jfr.jar;C:\Program Files\Java\jre8\classes
 49 java.vendor:   Oracle Corporation
 50 file.separator:   \
 51 java.vendor.url.bug:   http://bugreport.sun.com/bugreport/
 52 sun.cpu.endian:   little
 53 sun.io.unicode.encoding:   UnicodeLittle
 54 sun.desktop:   windows
 55 sun.cpu.isalist:   pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
 56 ----------------------------------------------------------------------------------------------------
 57 文件分隔符是:\
 58 ----------------------------------------------------------------------------------------------------
 59 java.runtime.name:   Java(TM) SE Runtime Environment
 60 sun.boot.library.path:   C:\Program Files\Java\jre8\bin
 61 java.vm.version:   25.0-b70
 62 java.vm.vendor:   Oracle Corporation
 63 java.vendor.url:   http://java.oracle.com/
 64 path.separator:   ;
 65 java.vm.name:   Java HotSpot(TM) Client VM
 66 file.encoding.pkg:   sun.io
 67 user.script:   
 68 user.country:   CN
 69 sun.java.launcher:   SUN_STANDARD
 70 sun.os.patch.level:   Service Pack 1
 71 java.vm.specification.name:   Java Virtual Machine Specification
 72 user.dir:   E:\Eclipse SE 工作空间\IOStream
 73 mykey:   myvalue************************************************************注意,这行是自定义添加的键值对
 74 java.runtime.version:   1.8.0-b132
 75 java.awt.graphicsenv:   sun.awt.Win32GraphicsEnvironment
 76 java.endorsed.dirs:   C:\Program Files\Java\jre8\lib\endorsed
 77 os.arch:   x86
 78 java.io.tmpdir:   C:\Users\KUANGD~1\AppData\Local\Temp\
 79 line.separator:   
 80 
 81 java.vm.specification.vendor:   Oracle Corporation
 82 user.variant:   
 83 os.name:   Windows 7
 84 sun.jnu.encoding:   GBK
 85 java.library.path:   C:\Program Files\Java\jre8\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre8/bin/client;C:/Program Files/Java/jre8/bin;C:/Program Files/Java/jre8/lib/i386;D:\MyPHPEnvironment\Apache\bin;D:\Android开发\adt-bundle-windows-x86-20140321\adt-bundle-windows-x86-20140321\sdk\platform-tools;D:\Android开发\adt-bundle-windows-x86-20140321\adt-bundle-windows-x86-20140321\sdk\tools;c:\Windows\System32;C:\Program Files\Java\jdk1.8.0\bin;C:\Program Files\Java\jdk1.8.0\jre\bin;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\MySQL\MySQL Utilities 1.3.5\;D:\masm;D:\应用程序扩展\VC++ 6.0\Tools\WinNT;D:\应用程序扩展\VC++ 6.0\MSDev98\Bin;D:\应用程序扩展\VC++ 6.0\Tools;D:\应用程序扩展\VC98\bin;C:\Program Files\SSH Communications Security\SSH Secure Shell;D:\Program Files\Eclipse SE\eclipse;;.
 86 java.specification.name:   Java Platform API Specification
 87 java.class.version:   52.0
 88 sun.management.compiler:   HotSpot Client Compiler
 89 os.version:   6.1
 90 user.home:   C:\Users\kuangdaoyizhimei
 91 user.timezone:   
 92 java.awt.printerjob:   sun.awt.windows.WPrinterJob
 93 file.encoding:   GBK
 94 java.specification.version:   1.8
 95 user.name:   kuangdaoyizhimei
 96 java.class.path:   E:\Eclipse SE 工作空间\IOStream\bin
 97 java.vm.specification.version:   1.8
 98 sun.arch.data.model:   32
 99 java.home:   C:\Program Files\Java\jre8
100 sun.java.command:   p01.OftenUseClass.p01.SystemDemo.SystemDemo
101 java.specification.vendor:   Oracle Corporation
102 user.language:   zh
103 awt.toolkit:   sun.awt.windows.WToolkit
104 java.vm.info:   mixed mode, sharing
105 java.version:   1.8.0
106 java.ext.dirs:   C:\Program Files\Java\jre8\lib\ext;C:\windows\Sun\Java\lib\ext
107 sun.boot.class.path:   C:\Program Files\Java\jre8\lib\resources.jar;C:\Program Files\Java\jre8\lib\rt.jar;C:\Program Files\Java\jre8\lib\sunrsasign.jar;C:\Program Files\Java\jre8\lib\jsse.jar;C:\Program Files\Java\jre8\lib\jce.jar;C:\Program Files\Java\jre8\lib\charsets.jar;C:\Program Files\Java\jre8\lib\jfr.jar;C:\Program Files\Java\jre8\classes
108 java.vendor:   Oracle Corporation
109 file.separator:   \
110 java.vendor.url.bug:   http://bugreport.sun.com/bugreport/
111 sun.cpu.endian:   little
112 sun.io.unicode.encoding:   UnicodeLittle
113 sun.desktop:   windows
114 sun.cpu.isalist:   pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
View Code

各种系统属性中,有几个个重要的属性:路径分隔符、行分隔符属性等。在Windows下,行分隔符是\r\n,而在linux下,行分隔符是\n,这就导致同一个Java程序在windows下和在linux下运行结果不同。解决办法就是使用System.getProperty("line.separator")得到当前系统下的行分隔符(举例),并应用在程序中。

二、java.lang.Runtime类。

public class Runtimeextends Object

 

 

API1.6对Runtime类的解释:每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。应用程序不能创建自己的 Runtime 类实例。

个人认为Runtime类只是桥梁,它将当前运行的java程序和运行的平台联系起来,使得java程序能够使用该平台上的一些资源,如某些应用程序等。

注意,该类没有构造方法摘要,但是却又非静态方法,说明该类使用了单例设计模式。

1.getRuntime方法。

public static Runtime getRuntime()

 

 

该方法返回一个Runtime实例对象。

2.exec方法。

该方法有多个重载方法,现在只说一种。

public Process exec(String[] cmdarray)throws IOException

 

 

该方法返回值是Process类型的,Process类是“进程类”,该进程是在当前java程序运行平台上的其它程序运行的进程。比如notepad.exe等。

Process类中有多个方法可以操作该进程,比如使用destroy()方法可以杀死当前进程。

示例程序:

 1 package p01.OftenUseClass.p02.RuntimeDemo;
 2 
 3 import java.io.IOException;
 4 
 5 public class RuntimeDemo
 6 {
 7 
 8     public static void main(String[] args) {
 9         Demo();
10     }
11     private static void Demo() {
12         Runtime r=Runtime.getRuntime();
13         try
14         {
15             Process p=r.exec("notepad.exe c:\\aim.java");
16             try 
17             {
18                 Thread.sleep(5000);
19             } 
20             catch (InterruptedException e)
21             {
22                 e.printStackTrace();
23             }
24             p.destroy();
25         } catch (IOException e1) 
26         {
27             e1.printStackTrace();
28         }
29         
30     }
31 
32 }
View Code

三、java.lang.Math类。

public final class Mathextends Object

 

 

该类是一个工具类,封装了很多数学方法。如正弦、预先、正切、余切等。

几个常用的方法的代码示例:

 1 package p01.OftenUseClass.p03.MathDemo;
 2 
 3 import java.util.Random;
 4 
 5 public class MathDemo {
 6 
 7     public static void main(String[] args) {
 8         //Demo();
 9 //        randomDemo();
10 //        RandomClassDemo();
11         RandomClassDemo1();
12     }
13 
14     private static void RandomClassDemo1() {
15         /*
16          * 使用NextInt方法更容易实现得到15-36的随机数
17          */
18         Random r=new Random();
19         for(int i=1;i<=100;i++)
20         {
21             System.out.println(r.nextInt(36-15)+15);
22         }
23     }
24 
25     private static void RandomClassDemo() {
26         /*
27          * 使用Random的nextDouble方法也可以获取[0,1)的随机数
28          */
29         Random r=new Random();
30         for(int i=1;i<=100;i++)
31         {
32             int aim=(int) Math.floor(r.nextDouble()*(36-15+1)+15);//[0,22) [15,37)
33             System.out.println(aim);
34         }
35     }
36 
37     private static void randomDemo() {
38         //求15-36的随机数。
39         for(int i=1;i<=100;i++)
40         {
41             int aim=(int) Math.floor(Math.random()*(36-15+1)+15);//[0,22) [15,37)
42             System.out.println(aim);
43         }
44     }
45 
46     private static void Demo() {
47         /*
48          * 演示一些常用的方法。
49          */
50         System.out.println(Math.ceil(3.1415926));
51         System.out.println(Math.floor(3.1415926));
52         System.out.println(Math.round(3.1415926));
53         
54         for(int i=1;i<=10;i++)
55         {
56             System.out.println(Math.random());
57         }
58         
59         
60     }
61 
62 }
View Code

四、日期类(java.util.Date、java.util.Calendar、java.text.DateFormat、java.text.SimpleDateFormat)

1.java.util.Date类。

public class Dateextends Objectimplements Serializable, Cloneable, Comparable<Date>

 

 

该类有六个构造方法,但是有四个已经过时,剩下的两个构造方法:

Date()
          分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date)
          分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

 

 

 

该类称为日期类,如果直接打印该类的一个对象,将会输出日期中封装的年月日时分秒信息。

日期对象转换为毫秒值使用方法getTime():

 long getTime()
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

毫秒值转换为日期对象使用构造方法创建对象或者使用setTime方法。

 void setTime(long time)
          设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

示例代码:

 1 package p01.OftenUseClass.p04.DateDemo;
 2 
 3 import java.util.Date;
 4 
 5 public class Class01ChangeDateAndMillis {
 6 
 7     public static void main(String[] args)
 8     {
 9         changeMillisToDateDemoFunction01();
10         changeMillisToDateDemoFunction02();
11         changeDateToMillisDemo();
12     }
13 
14     private static void changeMillisToDateDemoFunction01() 
15     {
16         /*
17          * 使用构造方法将毫秒值转换成日期对象。
18          */
19         long now=System.currentTimeMillis();
20         Date date1=new Date(now);
21         System.out.println(date1);
22     }
23     private static void changeMillisToDateDemoFunction02() {
24     /*
25      * 使用set方法将毫秒值转换成日期对象
26      */
27         long time=System.currentTimeMillis();
28         time+=1000*600;
29         Date date=new Date();
30         System.out.println(date);
31         date.setTime(time);
32         System.out.println(date);
33     }
34 
35     private static void changeDateToMillisDemo() {
36         /*
37          * 使用getTime方法将日期对象转换成毫秒值
38          */
39         Date date=new Date();
40         long time=date.getTime();
41         System.out.println(time);
42     }
43 }
View Code

2.java.text.DateFormat类。

public abstract class DateFormatextends Format

 

 

通过该类的API描述可以看出该类是一个抽象类,但是该类仍然封装了非静态方法,说民该类也使用了单例设计模式。

(1)获取对象实例的方法。

该类获取对象实例的方法有很多种,但是常用的只有几种:

static DateFormat getDateInstance()
          获取日期格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateTimeInstance()
          获取日期/时间格式器,该格式器具有默认语言环境的默认格式化风格。
static DateFormat getDateInstance(int style)
          获取日期格式器,该格式器具有默认语言环境的给定格式化风格。
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)
          获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。

关于dataStyle,API给出的解释:

static int DEFAULT
          用于默认模式的常量。
static int FULL
          用于 FULL 模式的常量。
static int LONG
          用于 LONG 模式的常量。
static int MEDIUM
          用于 MEDIUM 模式的常量。
static int SHORT
          用于 SHORT 模式的常量。

一般来说使用LONG模式就已经足够了。

(2)format方法。

format方法有三种重载形式:

 String format(Date date)
          将一个 Date 格式化为日期/时间字符串。
abstract  StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition)
          将一个 Date 格式化为日期/时间字符串。
 StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition fieldPosition)
          重写 Format。

用的比较的是第一种方法。

该方法将返回一个日期的字符串表示形式,该字符串已经被格式化。

(3)代码示例。

 1 package p01.OftenUseClass.p04.DateDemo;
 2 
 3 import java.text.DateFormat;
 4 import java.util.Date;
 5 
 6 public class Class02ChangeMachineDateToNormalFormatByDateFormat {
 7 
 8     public static void main(String[] args) 
 9     {
10         /*
11          * 使用DateFormat中的方法得到想要的日期格式
12          */
13 //        defaultFormatDemo();
14         limitNormalFormatDemo();
15     }
16 
17     private static void limitNormalFormatDemo() {
18         //演示四种指定格式的日期格式器。特别注意,这种方式不能指定自定义格式。
19         Date date=new Date();
20         DateFormat df_1=DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.DEFAULT);
21         DateFormat df_2=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
22         DateFormat df_3=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
23         DateFormat df_4=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
24         DateFormat df_5=DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
25         
26         System.out.println("DEFAULT模式:"+df_1.format(date));
27         System.out.println("FULL模式:"+df_2.format(date));
28         System.out.println("SHORT模式:"+df_3.format(date));
29         System.out.println("LONG模式:"+df_4.format(date));
30         System.out.println("MEDIUM模式:"+df_5.format(date));
31         
32         
33     }
34 
35     private static void defaultFormatDemo() {
36         /*
37          * 这是默认格式的转换。
38          */
39         Date date=new Date();
40         DateFormat df_Date=DateFormat.getDateInstance();//得到不带时分秒的日期格式器
41         DateFormat df_DateTime=DateFormat.getDateTimeInstance();//得到时分秒的日期格式器
42         System.out.println(df_Date.format(date));
43         System.out.println(df_DateTime.format(date));
44     }
45 
46 }
View Code

(4)注意事项。

DateFormat类只能支持五种模式的日期格式化,而不能提供更多的自定义模式,原因就是DateFormat类是一个抽象类,而且只提供了能够接受固定参数的get[XXX]Instance方法,如果想要自定义格式化的模式,应当使用其子类SimpleDateFormat。

3.java.text.SimpleDateFormat类。

public class SimpleDateFormatextends DateFormat

 

 

该类是DateFormat类的子类,可以实例化对象,所以能够自定义模式。

日期和时间模式:

字母日期或时间元素表示示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用法示例:

日期和时间模式结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700

 

 

 

 

 

 

 

 

(1)构造方法。

SimpleDateFormat()
          用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
          用给定的模式和日期符号构造 SimpleDateFormat
SimpleDateFormat(String pattern, Locale locale)
          用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat

四种构造方法中,使用的最多的是第二种方法,这种方法指定了日期和时间模式pattern。

(2)parse方法。

 Date parse(String text, ParsePosition pos)
          解析字符串的文本,生成 Date

该方法虽然有两个参数,但是经常只写一个参数,那就是日期字符串,如“2014年2月2日 13:14:21”

(3)format方法。

 StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
          将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer

该方法虽然有三个参数,但是经常只写一个参数,即date。

(4)代码示例。

 1 package p01.OftenUseClass.p04.DateDemo;
 2 
 3 import java.util.Date;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 
 7 public class Class03ChangeMachineDateAndNormalFormatBySimpleDateFormat {
 8 
 9     public static void main(String[] args) {
10         changeDateStringToDateObjectByParseFunction();
11     }
12 
13     private static void changeDateStringToDateObjectByParseFunction() {
14         String pattern_1="yyyy年MM月dd日 HH:mm:ss";
15         String pattern_2="yyyy##MM##dd HH#m#ss";
16         String dateString1="2012年12月31日 00:00:01";
17         SimpleDateFormat sdf=new SimpleDateFormat(pattern_1);
18         SimpleDateFormat sdf_1=new SimpleDateFormat(pattern_2);
19         try 
20         {
21             Date date=sdf.parse(dateString1);
22             System.out.println(date);
23             
24             
25             String dataString2=sdf_1.format(date);//注意format方法返回一个指定格式的StringBuffer对象。
26             System.out.println(dataString2);
27         } catch (ParseException e) 
28         {
29             e.printStackTrace();
30         }
31         
32     }
33 
34 }
View Code

4.java.util.Calendar类。

日期类不够国际化所以被Calendar替代了一些功能。

public abstract class Calendarextends Objectimplements Serializable, Cloneable, Comparable<Calendar>

 

 

(1)概述。

Calendar类是一个抽象类,但是该类提供了一个方法能够返回一个该类的实例对象。

(2)getInstance()方法。

该方法有多个重载形式:

static Calendar getInstance()
          使用默认时区和语言环境获得一个日历。
static Calendar getInstance(Locale aLocale)
          使用默认时区和指定语言环境获得一个日历。
static Calendar getInstance(TimeZone zone)
          使用指定时区和默认语言环境获得一个日历。
static Calendar getInstance(TimeZone zone, Locale aLocale)
          使用指定时区和语言环境获得一个日历。

(3)get方法。

 int get(int field)
          返回给定日历字段的值。

该方法实现了很多Date类中已经过时的方法。

通过这个方法可以获取到Date对象的各个字段。

field是字段的意思,几个重要的字段:

YEAR
          指示年的 getset 的字段数字。

MONTH
          指示月份的 getset 的字段数字。

DAY_OF_MONTH
          getset 的字段数字,指示一个月中的某天。

HOUR_OF_DAY
          getset 的字段数字,指示一天中的小时。

MINUTE
          getset 的字段数字,指示一小时中的分钟。

SECOND
          getset 的字段数字,指示一分钟中的秒。

(4)set方法。

该方法也有多个重载形式。

 void set(int field, int value)
          将给定的日历字段设置为给定值。
 void set(int year, int month, int date)
          设置日历字段 YEARMONTHDAY_OF_MONTH 的值。
 void set(int year, int month, int date, int hourOfDay, int minute)
          设置日历字段 YEARMONTHDAY_OF_MONTHHOUR_OF_DAYMINUTE 的值。
 void set(int year, int month, int date, int hourOfDay, int minute, int second)
          设置字段 YEARMONTHDAY_OF_MONTHHOURMINUTESECOND 的值。

该方法能够将当前对象的各个字段值设置为指定值。

(5)add方法。

abstract  void add(int field, int amount)
          根据日历的规则,为给定的日历字段添加或减去指定的时间量。

(6)代码示例。

 1 package p01.OftenUseClass.p04.DateDemo;
 2 
 3 import java.util.Calendar;
 4 
 5 public class Class04CalendarDemo {
 6 
 7     public static void main(String[] args) {
 8         Calendar cal=Calendar.getInstance();
 9         getDateSegmentsDemo(cal);
10         setDateSegmentsDemo(cal);
11         addDateSegmentsDemo(cal);
12     }
13 
14     private static void addDateSegmentsDemo(Calendar cal) {
15         /*
16          * 使用add方法修改日期
17          */
18         cal.add(Calendar.YEAR, 1);
19         cal.add(Calendar.MONTH, 1);
20         cal.add(Calendar.DAY_OF_MONTH, 1);
21         
22         cal.add(Calendar.HOUR_OF_DAY, 1);
23         cal.add(Calendar.MINUTE, 1);
24         cal.add(Calendar.SECOND, -1);
25         
26         getDateSegmentsDemo(cal);
27     }
28 
29     private static void setDateSegmentsDemo(Calendar cal) {
30         /*
31          * 设置当前日期各字段
32          */
33         cal.set(Calendar.YEAR, 2000);
34         cal.set(Calendar.MONTH, 1);
35         cal.set(Calendar.DAY_OF_MONTH, 21);
36         
37         cal.set(Calendar.HOUR_OF_DAY, 13);
38         cal.set(Calendar.MINUTE, 31);
39         cal.set(Calendar.SECOND, 59);
40         
41         getDateSegmentsDemo(cal);
42     }
43 
44     public static void getDateSegmentsDemo(Calendar cal) {
45         /*
46          * 为了更加标准化,使用Calendar类获取具体的年月日而不使用Date对象了
47          */
48         int year=cal.get(Calendar.YEAR);
49         int month=cal.get(Calendar.MONTH);
50         int day=cal.get(Calendar.DAY_OF_MONTH);
51         
52         int hour=cal.get(Calendar.HOUR_OF_DAY);
53         int mininus=cal.get(Calendar.MINUTE);
54         int millis=cal.get(Calendar.SECOND);
55         
56         System.out.println(year+"年"+month+"月"+day+"日 "+hour+":"+mininus+":"+millis);
57     }
58 
59 }
View Code

 

posted @ 2014-10-17 17:21  狂盗一枝梅  阅读(393)  评论(0编辑  收藏  举报