-------android培訓、java培訓、java學習型技術博客、期待與您交流!
----------
三、Date類
1、概述:
表示的是從GMT(格林尼治標準時間)1970年, 1 月 1日00:00:00這一刻之前或者是之後經歷的毫秒數.
java中默認的格式如:Sun Jan 18 10:17:58 CST 2013
這樣的格式不容易看懂,而且不一定滿足每個人的需求,那麼就需要自定義格式,需要格式化日期模式。具體步驟:
1)創建Date對象
2)將模式封裝到SimpleDateFormat對象中
3)調用format方法讓模式格式化指定Date對象
下面給出完整的代碼和註釋:
import java.util.*;
import java.text.*;
class DateDemo
{
public static void main(String[] args)
{
Date d=new Date();
//打印的時間看不懂,希望有些格式
System.out.println(d);
//將模式封裝到SimpleDateFormat對象中
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");
//調用formate方法讓模式格式化指定的Date對象
String time=sdf.format(d);
System.out.println("time="+time);
}
}
四、Calendar類
1、概述:
1)Calendar是一個抽象類,它爲特定瞬間與一組諸如YEAR、MONTH、DAY_OF_MONTH等日曆字段之間的轉換提供了一些方法。
2)Calendar可以對年月日等時間進行獲取。並提供了相應的子段值。具體的例子可參閱API文檔。
2、方法:
2.1、基本獲取時間
1)獲取年份:Calendar.YEAR
2)獲取月份:Calendar.MONTH
3)獲取日期:Calendar.DAY_OF_MONTH
4)獲取星期:Calendar.DAY_OF_WEEK
5)獲取小時:Calendar.HOUR_OF_DAY
6)獲取分鐘:Calendar.MINUTE
7)獲取秒數:Calendar.SECOND
2.2、設置時間:
1)爲給定的日曆字段添加或減去指定的時間值: ---> void add(int field,int amount);
2)獲取指定的日曆字段對應的時間值: ---> int get(int field);
3)將給定日曆字段對應的時間值設置爲給定值: ---> void set(int field,int value);
設置日曆字段 YEAR、MONTH和DAY_OF_MONTH的值: ---> void set(int year,int month,int date);
3.用查表法打印出現在的日期:
import java.util.*;
import java.text.*;
class CalendarDemo
{
public static void main(String[] args)
{
Calendar c=Calendar.getInstance();
//查表法
String[] mons={"一月","二月","三月","四月",
"五月","六月","七月","八月",
"九月","十月","十一月","十二月"};
String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
int index=c.get(Calendar.MONTH);
int index1=c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR)+"年");
//sop((c.get(Calendar.MONTH)+1)+"月");
sop(mons[index]);
sop(c.get(Calendar.DAY_OF_MONTH)+"日");
//sop("星期"+c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index1]);
/*
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy");
String year=sdf.format(d);
System.out.println(year);
*/
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
練習:
1、獲取任意年的二月有多少天:
2、獲取前一天的現在這個時刻
3、計算有效上課天數,每週六日不上課,計算任意年從九月到十月的有效上課天數
import java.util.*;
class CalendarTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//測試1
int n = getFEB(2012);
sop("2012年2月的天數:" + n);
//測試2
String s = getTheTime();
sop("昨天的現在這個時刻是:" + s);
sop("-----------------");
//測試3
int m = getValDay(2013,1,3);
sop("有效上課天數:" + m);
}
//測試1:創建獲取二月的方法
public static int getFEB(int year)
{
Calendar c = Calendar.getInstance();
//設置任意年的時間爲3月1號
c.set(year,2,1);
//獲取設置後的3月1日,並減去1天,即爲二月最後一天
c.add(Calendar.DAY_OF_MONTH,-1);
//獲取最終設置的日期,即爲獲取到的二月的天數
int n = c.get(Calendar.DAY_OF_MONTH);
return n;
}
//測試2:獲取前一天的現在這個時刻
public static String getTheTime()
{
//獲取時間信息
Calendar c = Calendar.getInstance();
//將日期設置爲昨天
c.add(Calendar.DAY_OF_MONTH,-1);
//獲取昨天的現在這個時刻
int n = c.get(Calendar.DAY_OF_MONTH);
return n + "日 " + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE) + ":" + c.get(Calendar.SECOND);
}
//測試3:計算有效上課天數
public static int getValDay(int year,int startMON,int endMON)
{
//獲取時間信息
Calendar c = Calendar.getInstance();
//調用獲取天數函數
int day = getDay(c,year,startMON,endMON);
sop("總天數:" + day);//測試獲取的天數
//初始化星期
int week = 0;
//定義計數器
int count = 0;
//遍歷每天一天,判斷是否爲週六日,f否的話計數器自增
for(int i=0;i<day;i++)
{
//必須要先將天數加1再判斷,否則到week爲6的時候會一直continue,
//而且此處也可以避免下面的week是以星期日爲第一天的問題
c.add(Calendar.DAY_OF_MONTH,1);
//獲取當前天數的星期
week = c.get(Calendar.DAY_OF_WEEK);
sop("星期:" + week);
if (week==6 || week==7)
continue;
count++;
sop("有效天數:" + count);
}
return count;
}
//獲取給定月份的天數
public static int getDay(Calendar c,int year,int startMON,int endMON)
{
//定義天數和變量
int sum = 0;
//遍歷每個月的天數
for(int i=0;i<=endMON-startMON;i++)
{
//設定第二個月的第一天,循環一次後設定下個月爲處世月,因爲0爲一月份所以startMON要加1
c.set(year,startMON+i,1);
//獲取前一個月的天數
c.add(Calendar.DAY_OF_MONTH,-1);
//將每個月的天數累加
sum += c.get(Calendar.DAY_OF_MONTH);
//循環後,要相應加上i個月
c.add(Calendar.MONTH,i+1);
}
return sum;
}
}
五、Math-Random類
1、概述:
Math類中全爲靜態方法,都是數學中的一些計算方法。
2、方法:
1)double ceil(double d) ---> 返回大於指定數據的最小整數
2)double floor(double d) ---> 返回小於指定數據的最大整數
3)double pow(double a,double b) ---> 返回a的b次方
4)double/float round(double/float m) ---> 返回m四捨五入的值
5)double random() ---> 返回正號的double值,是一個 0<=X<1.0 的隨機數X
三、Random類
這是一個java.util中的一個單獨的類,獲取隨機數。與Math中的random是一樣的,不過這個類有自身的方法,可以將相應的隨機數強轉爲指定基本數據類型。
如:int nextInt(int n)
下面給出一個完整的代碼和註釋例子:
import java.util.*;
class MathDemo
{
public static void main(String[] args)
{
Random r=new Random();
for(int x=0;x<10;x++)
{
//int d=(int)(Math.random()*10+1);
int d=r.nextInt(10)+1;
sop(d);
}
show();
}
public static void show()
{
//ceil方法的特點:返回大於指定數據的最小整數
double d=Math.ceil(12.34);
//floor方法的特點:返回小於指定數據的最小整數
double d1=Math.floor(12.34);
//四捨五入
long l=Math.round(12.34);
sop("d="+d);
sop("d1="+d1);
sop("l="+l);
//返回a的b次方
double d2=Math.pow(2,3);
sop("d2="+d2);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
練習:將某一小數保留爲指定位數的小數
class MathDemo
{
public static void main(String[] args)
{
double d = round(16.6785,2);
System.out.println("d = " + d);
}
//保留指定位數爲n的小數
public static double round(double d,int n)
{
//將給定數擴大n倍後四捨五入,再縮小相應的倍數
return Math.round(d*(Math.pow(10,n)))/(Math.pow(10,n));
}
}
最新最全的的java學習視頻教程:http://pro.net.itcast.cn/View-22-1458.aspx