Date类
/*
java中的时间日期类 java.util.包下.
Date
构造方法
1 Date();
作用 构造一个Date对象,这个对象代表是系统当前时间.
2.Date(long l)
作用 构造一个Date对象,它代表的是从基准时间经过l这么长毫秒后的一个时间点。
Date类的成员方法
1.getTime方法
public long getTime()
作用 得到从基准时间到Date对象表示的时间所经过的毫秒值。返回的是毫秒值
2.setTime方法
public void setTime(long l)
作用 是将Date对象表示的时间点设置成经过l毫秒后的一个时间点。
*/
import java.util.*;
class Demo12
{
public static void main(String[] args)
{
method4();
}
//Date类的无参构造
public static void method1(){
Date d=new Date(); //得到一个时间,这个时间是系统当前时间.
System.out.println(d);
//正常得到的是 java.util.Date@hashCode
//得到的结果与上面的描述不同,说明Date类重写了toString
}
//Date有参数构造
public static void method2(){
Date d=new Date(100000000000L);
System.out.println(d);
}
//getTime
public static void method3(){
Date d=new Date(); //系统时间
long l=d.getTime();
System.out.println(l);
}
//setTime
public static void method4(){
Date d=new Date();//当前时间
d.setTime(1000);
System.out.println(d);
}
}
时间日期格式化类 DateFormat类 java.text包下
DateFormat 是日期/时间格式化子类的抽象类
抽象类不可以实例化
1.
1.1 public static DateFormat getDateInstance();
作用 获取日期格式器
1.2 public static DateFormat getDateInstance(int style);
作用 获取日期格式器 参数style作用是可以指定样式.
1.3 public static DateFormat getDateTimeInstance();
作用 获取日期时间格式器
1.4 public static DateFormat getDateTimeInstance(int dayStyle,int timeStyle);
作用 获取日期时间格式器 参数dayStyle作用是可以指定日期样式.timeStyle可以指定时间样式
2.format方法
public String format(Date date)
作用 是通过指定的格式器,将date对象格式化成字符串.
import java.util.*;
import java.text.*;
class Demo13
{
public static void main(String[] args)
{
method3();
}
public static void method3(){
DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);//得到日期格式器
/*
日期表现形式
//例如 SHORT 在中文下 yy-MM-dd
//例如 FULL 在中文下 yyyy年MM月dd日 星期
//例如 LONG 在中问下 yyyy年MM月dd日
时间表现形式
2012年10月18日 下午04时40分07秒 LONG形式
12-10-18 下午4:40 SHORT形式
2012年10月18日 星期四 下午04时40分58秒 CST FULL形式
*/
String myString = df.format(new Date());//将Date格式化
System.out.println(myString);
}
public static void method2(){
DateFormat df=DateFormat.getDateInstance(DateFormat.LONG);//得到日期格式器
//例如 SHORT 在中文下 yy-MM-dd
//例如 FULL 在中文下 yyyy年MM月dd日 星期
//例如 LONG 在中问下 yyyy年MM月dd日
String myString = df.format(new Date());//将Date格式化
System.out.println(myString);
}
public static void method1(){
//DateFormat df=DateFormat.getDateInstance();//得到日期格式器
DateFormat df=DateFormat.getDateTimeInstance();//得到日期时间格式器
String myString = df.format(new Date());//将Date格式化
System.out.println(myString);//得到的就是一个日期的字符串表示形式.
}
}
DateFormat样式有很多,记忆起来比较麻烦
我们在开发中应用时一般会使用 DateFormat的子类SimpleDateFormat类
这个类的好处是可以自定义样式.
import java.util.*;
import java.text.*;
class Demo14
{
public static void main(String[] args)
{
Date now=new Date();
//现在相要将时间格式化成 201210月18日 16:45:34
//String pattern="yyyy年MM月dd日 HH:mm:ss";
//想要这样的格式 2012/10/18 16时45分34秒
String pattern="yyyy/MM/dd HH时mm分ss秒";
DateFormat df=new SimpleDateFormat(pattern);
String s=df.format(now);
System.out.println(s);
}
}
import java.util.*;
import java.text.*;
public class DataDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date d=new Date();
System.out.println(d);
//将模式封装到simpleDataformat对象中。
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
//调用format方法让模式格式化指定Data对象
String time=sdf.format(d);
System.out.println("time="+time);
long l=System.currentTimeMillis();
Date d1=new Date(l);
System.out.println("d1:"+d1);
}
}
将一个字符串分析成日期:解析字符串成日期 parse方法
定义 public Date parse(String s) throws ParseException
作用 将字符串s按照DateForamt对象的指定的解析格式进行解析。
注意 如果DateFormat对象的解析格式与s字符串不匹配,
会抛出 ParseException异常。
import java.util.*;
import java.text.*;
class Demo15
{
public static void main(String[] args) throws Exception
{
String s="2000年8月8日 13:12:45";
DateFormat df=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d=df.parse(s);
System.out.println(d);
/*
DateFormat df=DateFormat.getDateInstance(); //yyyy-MM-dd
Date d=df.parse(s);
System.out.println(d);
*/
//我们在解析一个字符串变成日期时,因为格式器所对应的格式要与所解析的字符串
//格式匹配,这样才可以解析。那么我们使用SimpleDateFormat类可以自定义解析的格式
}
}
System类
/*
System类
System类不能实例化,这个类中的方法都是static方法。
1.public static long currentTimeMillis();
得到1970.1.1. 0:0:0 到执行这个方法时的毫秒值。
2.exit方法 停止jvm。
3.public static Properties getProperties();
得到系统属性
在软件开发中,我们开发完软件后,软件一般会有一个安装环境。
例如我们开发的软件只能在windows上运行,那么在安装时就可以
通过以上的方式进行判断。
4.public static String getProperty(String key);
通过指定的key值获得对应的属性信息.
我们可以在启动jvm时进行动态的传递 系统属性
java -Dname=value 类文件名.
设置完成后,就可以在整个程序中通过System类的getProperty方法将这个信息得到.
*/
/*System:类中的方法和属性都是静态的。
* in 标准输入,默认是键盘。
* 描述系统的一些信息
* 获取系统属性信息:Properties getProPerties();
*/
import java.util.*;
public class SystemDemo {
public static void main(String[] args) {
Properties prop=System.getProperties();
//因为Perperties是Hashtable的子类,也就是Map计划的一个子类对象
//那么可以通过map的方法取出该集合的元素。
//该集合中存储的都是字符串,没有泛型定义
//在系统中自定义一些特有信息
System.setProperty("Akey", "Avalue");
//获取指定属性信息
String os_value=System.getProperty("os.name");
System.out.println("操作系统为:"+os_value);
for(Object obj:prop.keySet())
{
String value=(String)prop.get(obj);
System.out.println(obj+"::"+value);
}
}
}
Runtime类
/*
Runtime类
代表的是一个运行实例,但是这个类没有提供构造方法,不能实例化对象
如果一个类中方法不全是静态的方法,并且这个类还没有提供构造。
单实例。
Runtime类是一个单实例类,它类中提供一个静态的获得本类对象的方法。
1.得到Runtime实例
public static Runtime getRuntime();
2.exec -------->execute全名
public Process exec(String m);
作用通过指定的字符串打开应用程序,返回值是一个进程,相当于是这个应用程序。
可以调用Process类中的destroy方法将程序关闭。
*/
/*
* Runtime对象
* 该类并没有提供构造函数
* 说明不可以new对象,那么会直接想到该类中的方法都是静态的。
* 发现该类中还有非静态方法
* 说明该类肯定会提供方法获取本类对象,而且该方法是静态的,并返回值类型是本类类型
*
*/
public class RuntimeDemo {
public static void main(String[] args) throws Exception
{
Runtime r=Runtime.getRuntime();
Process p=r.exec("notepad.exe");
Thread.sleep(4000);
p.destroy();
}
}
Calendar类
/*
Calendar日历类
它是一个抽象类。
Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。
Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
对于Calendar类来说最重要的方法 get/set方法
1.get作用 可以得到指定的日期字段的值
定义 public int get(int field)
2.set作用 可以设置指定的日期字段的值。
2.1 public void set(int filed,int value);
作用 使用value修改filed字段的值
2.2 public void set(int year,int month,int date);
作用 修改年,月,日字段的值
2.3 public void set(int year,int month,int date,int hour,int minute);
作用 修改年,月,日,小时,分钟字段的值
2.3 public void set(int year,int month,int date,int hour,int minute,int second);
作用 修改年,月,日,小时,分钟,秒字段的值
*/
import java.util.*;
class Demo16
{
public static void main(String[] args)
{
Calendar c=Calendar.getInstance();//获得Calendar实例 其实应该是一个子类对象
//使用set方法进行修改
//c.set(2008,7,8);
c.set(Calendar.YEAR,2008);
c.set(Calendar.MONTH,7);
c.set(Calendar.DATE,8);
//System.out.println(c);
//得到当前c这个日历中的年的字段
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;//0代表的是一月,我们为了显示正常,所有加1
//int day=c.get(Calendar.DATE);
int day=c.get(Calendar.DAY_OF_MONTH);
//int hour=c.get(Calendar.HOUR); //12小时制
int hour=c.get(Calendar.HOUR_OF_DAY); //24小时制
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+day+"日 "+ hour +"时"+minute+"分"+second+"秒");
}
}
import java.util.Calendar;
/*
* 练习:
* 1.获取任意年的二月有几天
* c.set(year,2,1) 某一年的3月1日
* c.add(Calendar.DAY_OF_MONTH,-1);3月1日,往前推一天,就是2月最后一天
* 2.获取昨天的现在的这个时刻
* c.add(Calendar.DAY_OF_MONTH,-1);
* 3.有效上课时间问题,周六日放假,从2012年9月1日到2013年7月14日
*
*/
public class CalendarDemo2 {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
c.set(2012,2,23);
c.add(Calendar.DAY_OF_MONTH, -18);
Calendarprint(c);
}
public static void Calendarprint(Calendar c)
{
//查表法 单独获取年,月,日
String[] months={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
int index=c.get(Calendar.MONTH);
sop(c.get(Calendar.YEAR)+"年");
sop(months[index]);
sop(c.get(Calendar.DAY_OF_MONTH)+"日");
String[] weeks={"","日","一","二","三","四","五","六"};
int windex=c.get(Calendar.DAY_OF_WEEK);
sop("星期"+weeks[windex]);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
/*
Calendar类的其它常用方法
1.add
定义 public void add(int field,int addValue);
作用 对指定的field字段进行增(减) addValue值操作
注意 所有的字段如果超出字段最大值,会自动进位.
2.getTime setTime 提供了在Calendar与Date之间的转换操作
定义 public Date getTime();
将Calendar对象转换成Date对象
时间日期格式化类只能操作Date对象。如果一个Calednar表示的时间要格式化,那么先将
Calendar对象转换成Date对象在操作.
定义 public void setTime(Date d);
作用 将一个Date对象表示的时间赋值给Calendar
Calendar类它对于时间的操作手段更丰富,我们将Date对象通过Calendar类的
setTime方法赋值给Calendar对象后,就可以采用这些Calendar类的方法时行操作
3.getTimeInMillis setTimeInMills
这两个方法是Calendar类中的方法,它们的作用与Date类中的getTime,setTime方法一样.
定义 public long getTimeInMillis();
作用 得到从基准时间到Calendar对象表示时间经过的毫秒
定义 public void setTimeInMillis(long l);
作用 将Calendar对象表示的时间点设置成从基准时间开始经过l毫秒后的时间点.
*/
import java.util.*;
import java.text.*;
class Demo17
{
public static void main(String[] args)
{
method3();
}
public static void method1(){
Calendar c=Calendar.getInstance(); //取系统当前时间
//我想得到30天以后的日期
//int nowDay=c.get(Calendar.DATE);
//c.set(Calendar.DATE,nowDay+30); //在当前日期上加30天
c.add(Calendar.DATE,-30);
showCanlendar(c);
}
//getTime与setTime
public static void method2(){
Date date=new Date(1234532113L);
//将这个时间延长3个月后得到这样的显示格式 yyyy-MM-dd HH:mm:ss
//1将Date转换成Calendar
Calendar c=Calendar.getInstance();
c.setTime(date); //这个操作就使用c与date表示的是同一个时间点
//2使用Calendar的add方法对月进行操作
c.add(Calendar.MONTH,3);
//3.得到指定格式字符串 日期格式化类只能操作Date,那么需要将Calendar转换成Date
DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String y=df.format(date);
String s=df.format(c.getTime());
System.out.println(y);
System.out.println(s);
}
public static void method3(){
Calendar c=Calendar.getInstance();
c.setTimeInMillis(c.getTimeInMillis()+24*60*60*1000);
showCanlendar(c);
//Date date=new Date();
//System.out.println(date.getTime());
///System.out.println(c.getTimeInMillis());
//System.out.println(new Date().getTime()==Calendar.getInstance().getTimeInMillis());
}
//显示Calendar
public static void showCanlendar(Calendar c){
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;
int day=c.get(Calendar.DAY_OF_MONTH);
int hour=c.get(Calendar.HOUR_OF_DAY); //24小时制
int minute=c.get(Calendar.MINUTE);
int second=c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+day+"日 "+ hour +"时"+minute+"分"+second+"秒");
}
}
Math类:
/*
Math类 这个类中包含的是关于数学操作的一些常用方法
Math类中的方法都是static的.
1.abs 求绝对值
2.max min
3.random
public static double random();
作用:随机得到0-1之间的一个数,包含0不包含1.
以前学习要获得一个随机数是使用Random类,这个类是jdk1.5后才有的。
4.floor
public static double floor(double d);
向下取整. 得到比d小或等于d的最大整数.
5.ceil
public static double ceil(double d)
向上取整 得到比d大或等于d的最小整数
6.round
public static int round(double d)
四舍五入
7.pow
public static double pow(double a,double b);
作用 得到a的b次方的值.
8. sqrt
public static double sqrt(double d);
作用 得到d的平方根.
*/
class Demo11
{
public static void main(String[] args)
{
//abs
//System.out.println(Math.abs(-100));
//max
//System.out.println(Math.max(10,20));
//random
//int n=(int)(Math.random()*100);
//System.out.println(n);
//System.out.println(Math.floor(3.94));
//System.out.println(Math.ceil(3.14));
//System.out.println(Math.round(3.49999999));
//System.out.println(Math.pow(2,2.5));
System.out.println(Math.sqrt(9));
}
}