`

18、java.util.Date-SimpleDateFormat-Calendar-Math-Random

阅读更多

一、Date类

 

  1. 类 Date 表示特定的瞬间,精确到毫秒。 
  2. 在 JDK 1.1 之前,类 Date 有两个其他的函数。
  3. 它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。
  4. 不过,这些函数的 API 不易于实现国际化。
  5. 从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,
  6. 使用 DateFormat 类来格式化和解析日期字符串。
  7. Date 中的相应方法已废弃。 
public class Date implements Serializable, Cloneable, Comparable<Date>
{
	//分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
	//自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数
	public Date(){}
}

 

二、java.text.SimpleDateFormat类

 

  1. 软件包 java.text 
  2. 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。
  3. SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
  4. 它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 
  5. SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。
  6. 日期和时间格式由日期和时间模式 字符串指定。
  7. 在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素
  8. 定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留): 
  9. 模式字母通常是重复的,其数量确定其精确表示
字母 日期或时间元素 表示 示例
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
/**
 *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 类

 

  1. Calendar 类是一个抽象类,不能实例化,可以创建它的子类对象new GregorianCalendar(),也可以通过getInstance获取对象
  2. 它为特定瞬间 与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
  3. 并为操作日历字段(例如获得下星期的日期)提供了一些方法。
  4. 瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 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);
		}
	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics