Date类
概述:
- 时间日期类。
- 用来获得时间和日期信息。
构造方法:
Date()
- 获得当前系统时间日期对象。
- 若要输出,可以直接sout(对象名)
Date(long date)
- 根据指定的毫秒值创建日期对象。
成员方法:
long getTime()
- 获得当前时间的毫秒值。
毫秒值概述:
1秒 == 1000毫秒
时间零点:
1970.1.1 00:00:00
示例代码:
public class DateDemo01 {
public static void main(String[] args){
// 创建日期对象
Date d = new Date();
// Sun Jul 29 09:58:10 CST 2018 ==> China Standard Time
// 2018‐07‐29 09:58:10
// 2018/07/29 09:58:10
System.out.println(d);
// 获得当前时间的毫秒值:1532829685562
System.out.println(d.getTime());
// 根据毫秒值创建日期对象
Date d2 = new Date(1000L);
// Thu Jan 01 08:00:01 CST 1970
System.out.println(d2);
}
}
DateFormat类
DateFormat类概述:
是一个日期格式化类,抽象类,不能直接创建该类的对象,只能创建子类对象。
DateFormat类常用子类:
SimpleDateFormat
DateFormat类常见操作:
- 将日期对象转换为字符串:Date ==> String
- 将日期字符串转换为日期对象: String ==> Date
SimpleDateFormat类的构造方法:
SimpleDateFormat()
- 创建日期格式化对象,使用默认的日期模式。
SimpleDateFormat(String pattern)
- 指定日期模式创建日期格式化对象。
SimpleDateFormat类的常用方法:
String format(Date date)
- 将日期对象格式化为字符串: Date ==> String
void applyPattern(String pattern)
- 修改日期模式
Date parse(String str)
- 将字符串转换为日期对象: String ==> Date
日期模式:
yyyy | 年 |
|
MM | 月 | |
dd | 日 | |
HH | 时 | HH:24小时制 hh:12小时制 |
mm | 分 | |
ss | 秒 |
注意事项与总结:
- 年:yyyy,可以为3位,若3位自动补成4位。可以为一位与二位,若为一位,则自动补成二位。
- 只有MM和HH是大写的,其他都是小写。
日期转换字符串的步骤:
- 创建日期对象。
- 创建日期格式化对象并指定日期模式。
- 调用日期格式化对象的format方法将日期转换为字符串。
示例代码:
public class DateFormatDemo01 {
public static void main(String[] args){
// 创建日期对象
Date d = new Date();
// 创建日期格式化对象:使用默认的日期模式
// 2018‐07‐29 09:58:10
SimpleDateFormat sdf = new SimpleDateFormat();
// 修改日期模式
sdf.applyPattern("yyyy/MM/dd HH:mm:ss");
// 创建日期格式化对象:指定日期模式
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
// 将日期对象格式化为字符串
String dStr = sdf.format(d);
// 2018/7/29 上午10:16
// 2018‐07‐29 09:58:10
// 2018/07/29 09:58:10
System.out.println(dStr);
}
}
字符串转换日期对象的步骤:
- 创建日期格式化对象并指定日期模式。
- 调用日期格式化对象的parse方法将字符串转换为日期对象。
示例代码:
public class DateFormatDemo02 {
public static void main(String[] args) throws ParseException {
// 日期字符串
String str = "2018‐07‐29 10:26:23";
// 创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd HH:mm:ss");
// 将字符串转换为日期对象
Date d = sdf.parse(str);
System.out.println(d);
}
}
Calendar类
Calendar类概述:
- 是一个日历类,通过日历类可以获得日期和时间信息。
- 是一个抽象类,不能直接创建该类的对象,只能使用子类。(猜想是单例模式的类)
如何获得日历类对象:
通过调用Calendar类的静态方法获得日历对象,该方法声明如下:
- static Calendar getInstance()
Calendar类常用方法:
int get(int field)
- 根据日历字段获得对应的值。 常见的日历字段:年月日时分秒。
- 也可以用给的常量值,参数写 Calendar.XXX
- 取出的月份的数字,需要加上1.,才是实际的月份。
void set(int field,int value)
- 修改指定日历字段的值为value。(当成翻日历)
- 也可以用给的常量值,参数写 Calendar.XXX
- 如果超出范围,会自动进位。
- 存的月份比实际的月份少一,例如:若想把系统调成7月份,则value值为6。
void add(int field,int value)
- 将指定日历字段的值在当前基础上偏移一个值value。
- value:正数,向后偏移。
- value:负数,向前偏移。
long getTimeInMillis()
- 获得当前时间的毫秒值
Date getTime()
- 获得日期对象
void set(int year,int month,int date)
- 修改年月日
对月份的小结:
- 计算机取值 0-----11,对应着实际赋值的1-------12。
- 如输入0月份,电脑get出来的月份数字也是0,但是电脑实际上是1月份。
- 如输入12月份,则进一年,电脑get出来的月份数字也是0,但是电脑实际上是1月份。
Date和Calendar如何选择:
- Date 是不支持国际化的。
- Calendar 是支持国际化的。
- 如果项目需要支持国际化,则选择Calendar,否则随便选择。
综合应用Date类和Calender类:
需求:计算出一个人已经出生了多少天。
/**
计算出生到现在活了多少天:使用Date和SimpleDateFormat实现
*/
public class CalendarDemo01 {
public static void main(String[] args) throws ParseException {
// 出生日期
String brithDayStr = "2018‐07‐28";
// 创建日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd");
// 将字符串转换日期对象
Date birthDayDate = sdf.parse(brithDayStr);
// 获得出生时间的毫秒值
long birthDayTime = birthDayDate.getTime();
// 获得当前时间日期对象
Date todayDate = new Date();
// 获得当前时间的毫秒值
long todayTime = todayDate.getTime();
// 两个毫秒值相减
long distance = todayTime ‐ birthDayTime;
System.out.println(distance/1000/3600/24);
}
}
/**
计算出生到现在活了多少天:使用Calenar类实现
*/
public class CalendarDemo02 {
public static void main(String[] args) throws ParseException {
// 获得日历对象
Calendar c = Calendar.getInstance();
// 获得当前时间的毫秒值
long todayTime = c.getTimeInMillis();
// 修饰年月日为出生日期
c.set(2018, 6, 28);
// 获得出生时的毫秒值
long birthDayTime = c.getTimeInMillis();
// 两个毫秒值相减
long distance = todayTime ‐ birthDayTime;
System.out.println(distance/1000/3600/24);
}
}