一、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 stringPropertyNames()
通过getProperty方法根据键获得值。
示例代码:
1 packagep01.OftenUseClass.p01.SystemDemo;2
3 importjava.util.Properties;4 importjava.util.Set;5
6 public classSystemDemo {7
8 public static voidmain(String[] args) {9 //currentMillisDemo();
10 getPropertiesDemo();11 newLine();12 getSinglePropertyDemo();13 newLine();14 setPropertyDemo();15 }16
17 private static voidnewLine() {18 for(int i=1;i<=100;i++)19 System.out.print("-");20 System.out.println();21 }22
23 private static voidsetPropertyDemo() {24 System.setProperty("mykey", "myvalue");25 getPropertiesDemo();26 }27
28 /*
29 * 获取当前系统的一个属性30 */
31 private static voidgetSinglePropertyDemo() {32 String file_seperator=System.getProperty("file.separator");33 System.out.println("文件分隔符是:"+file_seperator);34 }35
36 /*
37 * 获取当前系统属性。38 */
39 private static voidgetPropertiesDemo() {40 Properties pro=System.getProperties();41 Setset=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 voidcurrentMillisDemo() {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 Environment2 sun.boot.library.path: C:\Program Files\Java\jre8\bin3 java.vm.version: 25.0-b704 java.vm.vendor: Oracle Corporation5 java.vendor.url: http://java.oracle.com/6 path.separator: ;7 java.vm.name: Java HotSpot(TM) Client VM8 file.encoding.pkg: sun.io9 user.script:10 user.country: CN11 sun.java.launcher: SUN_STANDARD12 sun.os.patch.level: Service Pack 113 java.vm.specification.name: Java Virtual Machine Specification14 user.dir: E:\Eclipse SE 工作空间\IOStream15 java.runtime.version: 1.8.0-b13216 java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironment17 java.endorsed.dirs: C:\Program Files\Java\jre8\lib\endorsed18 os.arch: x8619 java.io.tmpdir: C:\Users\KUANGD~1\AppData\Local\Temp\20 line.separator:21
22 java.vm.specification.vendor: Oracle Corporation23 user.variant:24 os.name: Windows 725 sun.jnu.encoding: GBK26 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 Specification28 java.class.version: 52.029 sun.management.compiler: HotSpot Client Compiler30 os.version: 6.131 user.home: C:\Users\kuangdaoyizhimei32 user.timezone:33 java.awt.printerjob: sun.awt.windows.WPrinterJob34 file.encoding: GBK35 java.specification.version: 1.836 user.name: kuangdaoyizhimei37 java.class.path: E:\Eclipse SE 工作空间\IOStream\bin38 java.vm.specification.version: 1.839 sun.arch.data.model: 3240 java.home: C:\Program Files\Java\jre841 sun.java.command: p01.OftenUseClass.p01.SystemDemo.SystemDemo42 java.specification.vendor: Oracle Corporation43 user.language: zh44 awt.toolkit: sun.awt.windows.WToolkit45 java.vm.info: mixed mode, sharing46 java.version: 1.8.047 java.ext.dirs: C:\Program Files\Java\jre8\lib\ext;C:\windows\Sun\Java\lib\ext48 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\classes49 java.vendor: Oracle Corporation50 file.separator: \51 java.vendor.url.bug: http://bugreport.sun.com/bugreport/52 sun.cpu.endian: little53 sun.io.unicode.encoding: UnicodeLittle54 sun.desktop: windows55 sun.cpu.isalist: pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i8656 ----------------------------------------------------------------------------------------------------57 文件分隔符是:\58 ----------------------------------------------------------------------------------------------------59 java.runtime.name: Java(TM) SE Runtime Environment60 sun.boot.library.path: C:\Program Files\Java\jre8\bin61 java.vm.version: 25.0-b7062 java.vm.vendor: Oracle Corporation63 java.vendor.url: http://java.oracle.com/64 path.separator: ;65 java.vm.name: Java HotSpot(TM) Client VM66 file.encoding.pkg: sun.io67 user.script:68 user.country: CN69 sun.java.launcher: SUN_STANDARD70 sun.os.patch.level: Service Pack 171 java.vm.specification.name: Java Virtual Machine Specification72 user.dir: E:\Eclipse SE 工作空间\IOStream73 mykey: myvalue************************************************************注意,这行是自定义添加的键值对74 java.runtime.version: 1.8.0-b13275 java.awt.graphicsenv: sun.awt.Win32GraphicsEnvironment76 java.endorsed.dirs: C:\Program Files\Java\jre8\lib\endorsed77 os.arch: x8678 java.io.tmpdir: C:\Users\KUANGD~1\AppData\Local\Temp\79 line.separator:80
81 java.vm.specification.vendor: Oracle Corporation82 user.variant:83 os.name: Windows 784 sun.jnu.encoding: GBK85 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 Specification87 java.class.version: 52.088 sun.management.compiler: HotSpot Client Compiler89 os.version: 6.190 user.home: C:\Users\kuangdaoyizhimei91 user.timezone:92 java.awt.printerjob: sun.awt.windows.WPrinterJob93 file.encoding: GBK94 java.specification.version: 1.895 user.name: kuangdaoyizhimei96 java.class.path: E:\Eclipse SE 工作空间\IOStream\bin97 java.vm.specification.version: 1.898 sun.arch.data.model: 3299 java.home: C:\Program Files\Java\jre8100 sun.java.command: p01.OftenUseClass.p01.SystemDemo.SystemDemo101 java.specification.vendor: Oracle Corporation102 user.language: zh103 awt.toolkit: sun.awt.windows.WToolkit104 java.vm.info: mixed mode, sharing105 java.version: 1.8.0106 java.ext.dirs: C:\Program Files\Java\jre8\lib\ext;C:\windows\Sun\Java\lib\ext107 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\classes108 java.vendor: Oracle Corporation109 file.separator: \110 java.vendor.url.bug: http://bugreport.sun.com/bugreport/111 sun.cpu.endian: little112 sun.io.unicode.encoding: UnicodeLittle113 sun.desktop: windows114 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 RuntimeDemo6 {7
8 public static void main(String[] args) {9 Demo();10 }11 private static void Demo() {12 Runtime r=Runtime.getRuntime();13 try14 {15 Process p=r.exec("notepad.exe c:\\aim.java");16 try17 {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 packagep01.OftenUseClass.p03.MathDemo;2
3 importjava.util.Random;4
5 public classMathDemo {6
7 public static voidmain(String[] args) {8 //Demo();9 //randomDemo();10 //RandomClassDemo();
11 RandomClassDemo1();12 }13
14 private static voidRandomClassDemo1() {15 /*
16 * 使用NextInt方法更容易实现得到15-36的随机数17 */
18 Random r=newRandom();19 for(int i=1;i<=100;i++)20 {21 System.out.println(r.nextInt(36-15)+15);22 }23 }24
25 private static voidRandomClassDemo() {26 /*
27 * 使用Random的nextDouble方法也可以获取[0,1)的随机数28 */
29 Random r=newRandom();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 voidrandomDemo() {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 voidDemo() {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类。
该类有六个构造方法,但是有四个已经过时,剩下的两个构造方法:
Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年
1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
该类称为日期类,如果直接打印该类的一个对象,将会输出日期中封装的年月日时分秒信息。
日期对象转换为毫秒值使用方法getTime():
long
Date 对象表示的毫秒数。
毫秒值转换为日期对象使用构造方法创建对象或者使用setTime方法。
void
设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后
time 毫秒的时间点。
示例代码:
1 packagep01.OftenUseClass.p04.DateDemo;2
3 importjava.util.Date;4
5 public classClass01ChangeDateAndMillis {6
7 public static voidmain(String[] args)8 {9 changeMillisToDateDemoFunction01();10 changeMillisToDateDemoFunction02();11 changeDateToMillisDemo();12 }13
14 private static voidchangeMillisToDateDemoFunction01()15 {16 /*
17 * 使用构造方法将毫秒值转换成日期对象。18 */
19 long now=System.currentTimeMillis();20 Date date1=newDate(now);21 System.out.println(date1);22 }23 private static voidchangeMillisToDateDemoFunction02() {24 /*
25 * 使用set方法将毫秒值转换成日期对象26 */
27 long time=System.currentTimeMillis();28 time+=1000*600;29 Date date=newDate();30 System.out.println(date);31 date.setTime(time);32 System.out.println(date);33 }34
35 private static voidchangeDateToMillisDemo() {36 /*
37 * 使用getTime方法将日期对象转换成毫秒值38 */
39 Date date=newDate();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)获取对象实例的方法。
该类获取对象实例的方法有很多种,但是常用的只有几种:
获取日期/时间格式器,该格式器具有默认语言环境的给定日期和时间格式化风格。
关于dataStyle,API给出的解释:
static int
static int
static int
static int
static int
一般来说使用LONG模式就已经足够了。
(2)format方法。
format方法有三种重载形式:
用的比较的是第一种方法。
该方法将返回一个日期的字符串表示形式,该字符串已经被格式化。
(3)代码示例。
1 packagep01.OftenUseClass.p04.DateDemo;2
3 importjava.text.DateFormat;4 importjava.util.Date;5
6 public classClass02ChangeMachineDateToNormalFormatByDateFormat {7
8 public static voidmain(String[] args)9 {10 /*
11 * 使用DateFormat中的方法得到想要的日期格式12 */
13 //defaultFormatDemo();
14 limitNormalFormatDemo();15 }16
17 private static voidlimitNormalFormatDemo() {18 //演示四种指定格式的日期格式器。特别注意,这种方式不能指定自定义格式。
19 Date date=newDate();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 voiddefaultFormatDemo() {36 /*
37 * 这是默认格式的转换。38 */
39 Date date=newDate();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 标志符
AD
y
年
1996; 96
M
年中的月份
July; Jul; 07
w
年中的周数
27
W
月份中的周数
2
D
年中的天数
189
d
月份中的天数
10
F
月份中的星期
2
E
星期中的天数
Tuesday; Tue
a
Am/pm 标记
PM
H
一天中的小时数(0-23)
0
k
一天中的小时数(1-24)
24
K
am/pm 中的小时数(0-11)
0
h
am/pm 中的小时数(1-12)
12
m
小时中的分钟数
30
s
分钟中的秒数
55
S
毫秒数
978
z
时区
Pacific Standard Time; PST; GMT-08:00
用法示例:
日期和时间模式结果
"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。
SimpleDateFormat。
四种构造方法中,使用的最多的是第二种方法,这种方法指定了日期和时间模式pattern。
(2)parse方法。
该方法虽然有两个参数,但是经常只写一个参数,那就是日期字符串,如“2014年2月2日 13:14:21”
(3)format方法。
Date 格式化为日期/时间字符串,并将结果添加到给定的
StringBuffer。
该方法虽然有三个参数,但是经常只写一个参数,即date。
(4)代码示例。
1 packagep01.OftenUseClass.p04.DateDemo;2
3 importjava.util.Date;4 importjava.text.ParseException;5 importjava.text.SimpleDateFormat;6
7 public classClass03ChangeMachineDateAndNormalFormatBySimpleDateFormat {8
9 public static voidmain(String[] args) {10 changeDateStringToDateObjectByParseFunction();11 }12
13 private static voidchangeDateStringToDateObjectByParseFunction() {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=newSimpleDateFormat(pattern_1);18 SimpleDateFormat sdf_1=newSimpleDateFormat(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
(1)概述。
Calendar类是一个抽象类,但是该类提供了一个方法能够返回一个该类的实例对象。
(2)getInstance()方法。
该方法有多个重载形式:
(3)get方法。
int
返回给定日历字段的值。
该方法实现了很多Date类中已经过时的方法。
通过这个方法可以获取到Date对象的各个字段。
field是字段的意思,几个重要的字段:
get 和 set 的字段数字。
get 和 set 的字段数字。
get 和 set 的字段数字,指示一个月中的某天。
get 和 set 的字段数字,指示一天中的小时。
get 和 set 的字段数字,指示一小时中的分钟。
get 和 set 的字段数字,指示一分钟中的秒。
(4)set方法。
该方法也有多个重载形式。
void
将给定的日历字段设置为给定值。
void
设置日历字段
YEAR、MONTH 和 DAY_OF_MONTH 的值。
void
设置日历字段
YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY
和 MINUTE 的值。
void
设置字段
YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE
和 SECOND 的值。
该方法能够将当前对象的各个字段值设置为指定值。
(5)add方法。
abstract void
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
(6)代码示例。
1 packagep01.OftenUseClass.p04.DateDemo;2
3 importjava.util.Calendar;4
5 public classClass04CalendarDemo {6
7 public static voidmain(String[] args) {8 Calendar cal=Calendar.getInstance();9 getDateSegmentsDemo(cal);10 setDateSegmentsDemo(cal);11 addDateSegmentsDemo(cal);12 }13
14 private static voidaddDateSegmentsDemo(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 voidsetDateSegmentsDemo(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 voidgetDateSegmentsDemo(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