一、Date类
Date:表示特定的瞬间,精确到毫秒
构造方法:
(1)public Date():根据当前的默认毫秒值创建日期对象
(2)public Date(long date):根据给定的毫秒值创建日期对象
成员方法:
(1)public long getTime():获取时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
(2)public long setTime(long time):设置时间,表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
注意:一般的获取时间,我们更常用:System.currentTimeMillis()方法。
Date类需要掌握的内容:
1、从Date得到一个毫秒值
getTime()
2、把一个毫秒值转换成Date
A:构造方法实现:public Date(long date)
B:成员方法实现:public long setTime(long time)
二、DateFormat类
程序开发中
String ————————> Date
日期控件 转换 数据库
Date ————————> String
DateFormat类:日期/时间格式化子类的抽象类,我们使用具体子类:SimpleDateFormat
成员方法:
1、格式化:Date ——> String
public final String format(Date date)
2、解 析:String ——> Date
public Date parse(String source)
DateFormat类的具体实现类:SimpleDateFormat
SimpleDateFormat类的构造方法:
(1)SimpleDateFormat():默认日期/时间模式
(2)SimpleDateFormat(String pattern):给定日期/时间模式
日期/时间模式:
年 y
月 M
日 d
时 H
分 m
秒 s
Date -- String:格式化
// 创建日期对象
Date d = new Date();
// 创建格式化对象
//第一种:默认日期/时间模式
SimpleDateFormat sdf = new SimpleDateFormat();
public final String format(Date date)
String s = sdf.format(d);
System.out.println(s);
// 第二种:给定日期/时间模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// public final String format(Date date)
String s = sdf.format(d);
System.out.println(s);
String -- Date:解析
String str = "2016-09-30 19:29:30";
//注意:字符串解析为日期的时候,字符串格式必须和给定的字符串格式匹配
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(str);
System.out.println(dd);
案例:自定义封装,日期和字符串相互转换的工具类
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 日期和字符串相互转换的工具类
* @author
*/
public class DateUtil {
private DateUtil() {
}
/**
* 方法的作用:把一个日期对象转成一个字符串
* @param d 被格式化的日期对象
* @param format 传递过来的要被转换的格式
* @return 格式化后的字符串
*/
public static String dateToString(Date d, String format) {
// SimpleDateFormat sdf = new SimpleDateFormat(format);
// return sdf.format(d);
return new SimpleDateFormat(format).format(d);
}
/**
* 方法的作用:把一个字符串解析成一个日期对象
* @param s 被解析的字符串
* @param format 传递过来的要被转换的格式
* @return 解析后的日期对象
* @throws ParseException
*/
public static Date stringToDate(String s, String format) throws ParseException {
return new SimpleDateFormat(format).parse(s);
}
}
三、Calender类
Calendar类:一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如:获得下星期的日期)提供了一些方法。
日历字段:
(1)public static final int YEAR:指示年的 get 和 set 的字段数字,指示年。
(2)public static final int MONTH:指示月份的 get 和 set 的字段数字,指示一年中的月。
(3)public static final int DATE:get 和 set 的字段数字,指示一个月中的某天。
(4)public static final int HOUR_OF_DAY:get 和 set 的字段数字,指示一天中的小时。
(5)public static final int MINUTE:get 和 set 的字段数字,指示一小时中的分钟。
(6)public static final int SECOND:get 和 set 的字段数字,指示一分钟中的秒。
(7)public static final int DAY_OF_YEAR:get 和 set 的字段数字,指示当前年中的天数。
(8)public static final int DAY_OF_MONTH:get 和 set 的字段数字,指示一个月中的某天。
(9)public static final int DAY_OF_WEEK:get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。
常用方法:
(1)public static Calendar getInstance():使用默认时区和语言环境获得一个日历
如:Calendar rightNow = Calendar.getInstance();
(2)public int get(int field):返回给定日历字段的值。日历类中的每个日历字段都是静态的成员变量,并且是int类型。
// 获取年
int year = rightNow.get(Calendar.YEAR);
// 获取月
int month = rightNow.get(Calendar.MONTH);
// 获取日
int date = rightNow.get(Calendar.DATE);
System.out.println(year + "年" + (month + 1) + "月" + date + "日");
(3)public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作。
// 5年后的10天前
c.add(Calendar.YEAR, 5);
c.add(Calendar.DATE, -10);
(4)public final void set(int year,int month,int date):设置当前日历的年月日
c.set(2016, 10, 30);//注意:月是从0开始计数
案例:获取任意一年的二月有多少天
分析:
A:键盘录入任意的年份
B:设置日历对象的年月日
年:A录入的数据
月:2
日:1
C:把时间往前推一天,就是2月的最后一天
D:获取这一天输出
代码实现:
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
Calendar c = Calendar.getInstance();
c.set(year, 2, 1);
c.add(Calendar.DATE, -1);
System.out.println(c.get(Calendar.DATE));
拓展:public static Calendar getInstance()方法设计思想扩展
这种方法的思想:
abstract class Person {
public static Person getPerson() {
return new Student();
}
}
class Student extends Person {
}