有两个类是用来操作日期时间的。
第一个:Date类
Date类
构造方法
Date();无参构造
Date(long time);time 是当前时间的毫秒值
怎么获取当前的毫秒值呢?
有两种方法:
第一种:
通过创建Date类对象,调取getTime方法来获取
Date d = new Date();
d.getTime();
第二种:
System.currentTimeMillis();直接获取
但是Date的日期格式是英文版的,如何打印中国式的日期格式呢?比如2015-08-23 19:05:00
这时就有一个类是可以对时间进行日期格式化模版
DateFormat 但是它是抽象类 所以我们找他的子类
SimpleDateFormat类
构造方法
SimpleDateFormat();默认初始化是当前语言环境的默认格式符号。
SimpleDateFormat(String pattern);默认初始化是当前语言环境的给定的格式符号。
yyyy-MM-dd HH:mm:ss
y------年
M------月
d------日
H------小时
m------分钟
s------秒
String format(Date date);将一个Date对象格式化为一个你设定的日期格式的字符串。
Date parse(String dateStr);将一个日期字符串转化为一个Date对象。
如何将字符串和日期互转呢?
日期对象转化为我们想要的日期格式字符串
还是一样,将用到SimpleDateFormat格式化咯
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(String formatStr);直接把想要的格式放进去,
调用方法将日期转化为一个新的字符串
String dateStr = sdf.format(d);
打印就ok了
打印当前日期时间 格式为 例如:2015年9月9日 20:10:00
两步解决
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String dateStr = sdf.format(new Date);
字符串日期转化为日期对象
String s = "2015-08-23 19:05:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
注意:格式化模版必须要和你想要转为日期对象的格式一样,否则会报错。
Date d = sdf.parse(s);
打印就ok了
打印当前时间的Date对象
syso(new Date);就可以
Calendar类(抽象的)
作用:可以任意提取日期中的任何字段,并随意组合。
Calendar c = Calendar.getInstance();
获取年 int year = c.get(Calendar.YEAR);
获取月 int month = c.get(Calendar.MONTH);
获取某月的几日 int date = c.get(Calendar.DATE);
获取小时 int hour = c.get(Calendar.HOUR_OF_DAY);
获取分钟 int minute = c.get(Calendar.MINUTE);
获取秒 int second = c.get(Calendar.SECOND);
例题:计算某一年2月份有多少天?
思路:
1.创建Calendar对象,咦?Calendar是抽象类,怎么可以创建对象呢?
咋办呢?对 多态 Calendar中提供了一个方法 static Calendar getInstance可以将创建一个Calend对象
static Calendar getInstance 返回Calendar类型获取一个日历,基于当前时间。
Calendar c = Calendar.getInstance();
2.将Calendar对象的日期设置到3月一日。
c.set(2013,3,1);
3.将日期向前推一天。
c.add(Calendar.DATE, -1);
4.输出打印即可。
|