一、Date類
- 類 Date 表示特定的瞬間,精确到毫秒。
- 在 JDK 1.1 之前,類 Date 有兩個其他的函數。
- 它允許把日期解釋為年、月、日、小時、分鐘和秒值。它也允許格式化和解析日期字元串。
- 不過,這些函數的 API 不易于實作國際化。
- 從 JDK 1.1 開始,應該使用 Calendar 類實作日期和時間字段之間轉換,
- 使用 DateFormat 類來格式化和解析日期字元串。
- Date 中的相應方法已廢棄。
public class Date implements Serializable, Cloneable, Comparable<Date>
{
//配置設定 Date 對象并初始化此對象,以表示配置設定它的時間(精确到毫秒)。
//自 1970 年 1 月 1 日 00:00:00 GMT 以來的毫秒數
public Date(){}
}
二、java.text.SimpleDateFormat類
- 軟體包 java.text
- 提供以與自然語言無關的方式來處理文本、日期、數字和消息的類和接口。
- SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類。
- 它允許進行格式化(日期 -> 文本)、解析(文本 -> 日期)和規範化。
- SimpleDateFormat 使得可以選擇任何使用者定義的日期-時間格式的模式。
- 日期和時間格式由日期和時間模式 字元串指定。
- 在日期和時間模式字元串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解釋為模式字母,用來表示日期或時間字元串元素
- 定義了以下模式字母(所有其他字元 'A' 到 'Z' 和 'a' 到 'z' 都被保留):
- 模式字母通常是重複的,其數量确定其精确表示
字母 | 日期或時間元素 | 表示 | 示例 |
---|---|---|---|
| Era 标志符 | Text | |
| 年 | Year | ; |
| 年中的月份 | Month | ; ; |
| 年中的周數 | Number | |
| 月份中的周數 | Number | |
| 年中的天數 | Number | |
| 月份中的天數 | Number | |
| 月份中的星期 | Number | |
| 星期中的天數 | Text | ; |
| Am/pm 标記 | Text | |
| 一天中的小時數(0-23) | Number | |
| 一天中的小時數(1-24) | Number | |
| am/pm 中的小時數(0-11) | Number | |
| am/pm 中的小時數(1-12) | Number | |
| 小時中的分鐘數 | Number | |
| 分鐘中的秒數 | Number | |
| 毫秒數 | Number | |
| 時區 | General time zone | ; ; |
| 時區 | RFC 822 time zone | |
/**
*DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化并解析日期或時間。
*日期/時間格式化子類(如 SimpleDateFormat)允許進行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标準化。
*/
public abstract class DateFormat extends Format
{
//将一個 Date 格式化為日期/時間字元串
public final String format(Date date){}
//從給定字元串的開始解析文本,以生成一個日期。該方法不使用給定字元串的整個文本。
//例如,時間文本 "07/10/96 4:5 PM, PDT" 會解析成等同于 Date(837039928046) 的 Date。
public Date parse(String source)
throws ParseException{}
}
public class SimpleDateFormatextends DateFormat
{
//用預設的模式和預設語言環境的日期格式符号構造 SimpleDateFormat
public SimpleDateFormat(){}
//用給定的模式和預設語言環境的日期格式符号構造 SimpleDateFormat
public SimpleDateFormat(String pattern){}
//将給定的 Date 格式化為日期/時間字元串,并将結果添加到給定的 StringBuffer
public StringBuffer format(Date date,
StringBuffer toAppendTo,
FieldPosition pos){}
}
示例:
import java.text.SimpleDateFormat;
import java.util.Date;
public class OtherClassTest {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String time = sdf.format(d);
System.out.println(time);
}
}
三、Calendar 類
- Calendar 類是一個抽象類,不能執行個體化,可以建立它的子類對象new GregorianCalendar(),也可以通過getInstance擷取對象
- 它為特定瞬間 與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 月曆字段之間的轉換提供了一些方法,
- 并為操作月曆字段(例如獲得下星期的日期)提供了一些方法。
- 瞬間可用毫秒值來表示,它是距曆元(即格林威治标準時間 1970 年 1 月 1 日的 00:00:00.000,格裡高利曆)的偏移量。
public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>
{
//常用字段
public static final int DAY_OF_MONTH;
public static final int DAY_OF_YEAR;
public static final int DAY_OF_WEEK;
public static final int DAY_OF_WEEK_IN_MONTH;//目前月中的第幾個星期
public static final int HOUR;//HOUR 用于 12 小時制時鐘 (0 - 11)
public static final int HOUR_OF_DAY;//HOUR_OF_DAY 用于 24 小時制時鐘
public static final int MILLISECOND;//訓示一秒中的毫秒
public static final int MINUTE;//訓示一小時中的分鐘
public static final int SECOND;//訓示一分鐘中的秒
public static final int MONTH;
public static final int WEEK_OF_MONTH;
public static final int WEEK_OF_YEAR;
public static final int YEAR;
//常用方法
//根據月曆的規則,為給定的月曆字段添加或減去指定的時間量
public abstract void add(int field,
int amount);
//傳回給定月曆字段的值
public int get(int field){}
//使用預設時區和語言環境獲得一個月曆。傳回的 Calendar 基于目前時間,使用了預設時區和預設語言環境。
public static Calendar getInstance(){}
//傳回一個表示此 Calendar 時間值(從曆元至現在的毫秒偏移量)的 Date 對象
public final Date getTime(){}
//将給定的月曆字段設定為給定值。
public void set(int field,
int value){}
//設定月曆字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
public final void set(int year,
int month,
int date){}
//設定月曆字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值
public final void set(int year,
int month,
int date,
int hourOfDay,
int minute){}
//設定字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值
public final void set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second){}
//使用給定的 Date 設定此 Calendar 的時間。
public final void setTime(Date date){}
}
示例:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 需求:擷取任意年的二月份天數
*/
public class CalendarTest {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2004,2,1);
c.add(Calendar.DAY_OF_MONTH, -1);
int num = c.get(Calendar.DAY_OF_MONTH);
System.out.println(num);
Date d = c.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(d);
System.out.println(time);
}
}
四、java.lang.Math類
/**
*Math 類包含用于執行基本數學運算的方法,如初等指數、對數、平方根和三角函數
*/
public final class Math
{
//字段********************************************
//比任何其他值都更接近 e(即自然對數的底數)的 double 值
public static final double E;
//比任何其他值都更接近 pi(即圓的周長與直徑之比)的 double 值
public static final double PI;
//常用方法********************************************
//傳回 double,float,int,long 值的絕對值
public static double abs(double a){}
//傳回 double 值的立方根
public static double cbrt(double a){}
//傳回最小的(最接近負無窮大)double 值,該值大于等于參數,并等于某個整數
//ceil(5.4) = 6.0
public static double ceil(double a){}
//傳回角的三角餘弦。
public static double cos(double a){}
//傳回最大的(最接近正無窮大)double 值,該值小于等于參數,并等于某個整數
//floor(2.3) = 2.0
public static double floor(double a){}
//傳回兩個 double,float,int,long 值中較大的一個
public static double max(double a,
double b){}
//傳回兩個 double,float,int,long 值中較小的一個
public static float min(float a,
float b){}
//傳回第一個參數的第二個參數次幂的值。
public static double pow(double a,
double b){}
//傳回帶正号的 double 值,該值大于等于 0.0 且小于 1.0。傳回值是一個僞随機選擇的數
public static double random(){}
//傳回最接近參數并等于某一整數的 double 值
//rint(5.4)=5.0 rint(5.5)=6.0
public static double rint(double a){}
//..........
}
五、java.util.Random類
/**
*此類的執行個體用于生成僞随機數流。
*/
public class Random implements Serializable
{
//建立一個新的随機數生成器。
public Random(){}
//生成下一個僞随機數
protected int next(int bits){}
//傳回下一個僞随機數,它是取自此随機數生成器序列的、在 0.0 和 1.0 之間均勻分布的 float 值
public float nextFloat(){}
public double nextDouble(){}
public double nextBoolean(){}
public double nextLong(){}
//生成随機位元組并将其置于使用者提供的 byte 數組中。所生成的随機位元組數等于該 byte 數組的長度
public void nextBytes(byte[] bytes){}
//傳回下一個僞随機數,它是此随機數生成器的序列中均勻分布的 int 值
public int nextInt(){}
//傳回一個僞随機數,它是取自此随機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的 int 值
public int nextInt(int n){}
//傳回下一個僞随機數,它是取自此随機數生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标準差是 1.0。
public double nextGaussian(){}
}
六、示例
import java.util.Random;
public class MathTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
method2();
method1();
}
public static void method1()
{
Random ran = new Random();
for(int y=0;y<10;y++)
{
int x = ran.nextInt(10);
System.out.println(x+1);
}
}
public static void method2()
{
for(int y=0;y<10;y++)
{
int x = (int) (Math.random()*10%10+1);
System.out.println(x);
}
}
}