一、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 }
运行结果:
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
各种系统属性中,有几个个重要的属性:路径分隔符、行分隔符属性等。在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 }
三、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 }
四、日期类(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 }
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 }
(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 }
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
指示年的 get
和 set
的字段数字。
MONTH
指示月份的 get
和 set
的字段数字。
DAY_OF_MONTH
get
和 set
的字段数字,指示一个月中的某天。
HOUR_OF_DAY
get
和 set
的字段数字,指示一天中的小时。
MINUTE
get
和 set
的字段数字,指示一小时中的分钟。
SECOND
get
和 set
的字段数字,指示一分钟中的秒。
(4)set方法。
该方法也有多个重载形式。
void |
set(int field, int value) 将给定的日历字段设置为给定值。 |
void |
set(int year, int month, int date) 设置日历字段 YEAR 、MONTH 和 DAY_OF_MONTH 的值。 |
void |
set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR_OF_DAY 和 MINUTE 的值。 |
void |
set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR 、MONTH 、DAY_OF_MONTH 、HOUR 、MINUTE 和 SECOND 的值。 |
该方法能够将当前对象的各个字段值设置为指定值。
(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 }