一 :Date 类
看源码:
public
Date () {
this
(System.currentTimeMillis());
}
输出当前时间
代码:
public
class
DateDemo1 {
public
static
void
main(String[] args) {
System.
out
.println(
"当前时间"
+
new
Date());
}
}
结果:
当前时间Thu Nov 21 19:04:02 CST 2013
二: Calendar类
看源码:
public
abstract
class
Calendar
implements
Serializable, Cloneable, Comparable<Calendar> {
}
看见Calendar是一个抽象类,那么抽象类就必须要子类来继承实现
我们看源码的时候,看见Calendar有许多常量
下面就是一些常量的解释:
除了看见常量,还有一些方法
下面我们就来实现一些方法:
1. 在源码中有这样一段代码:
public
static
Calendar getInstance()
{
Calendar cal = createCalendar(TimeZone.getDefaultRef(),
Locale.getDefault(Locale.Category.
FORMAT
));
cal.
sharedZone
=
true
;
return
cal;
}
我们在看看
createCalendar这个是个什么?
private
static
Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
Calendar cal =
null
;
String caltype = aLocale.getUnicodeLocaleType(
"ca"
);
if
(caltype ==
null
) {
// Calendar type is not specified.
// If the specified locale is a Thai locale,
// returns a BuddhistCalendar instance.
if
(
"th"
.equals(aLocale.getLanguage())
&& (
"TH"
.equals(aLocale.getCountry()))) {
cal =
new
BuddhistCalendar(zone, aLocale);
}
else
{
cal =
new
GregorianCalendar(zone, aLocale);
}
}
else
if
(caltype.equals(
"japanese"
)) {
cal =
new
JapaneseImperialCalendar(zone, aLocale);
}
else
if
(caltype.equals(
"buddhist"
)) {
cal =
new
BuddhistCalendar(zone, aLocale);
}
else
{
// Unsupported calendar type.
// Use Gregorian calendar as a fallback.
cal =
new
GregorianCalendar(zone, aLocale);
}
return
cal;
}
我看到这个方法就是来用子类实例化父类的
2. 方法代码如下:
public
class
DateDemo1 {
public
static
void
main(String[] args) {
System.
out
.println(
"当前时间"
+
new
Date());
Calendar calendar=Calendar.getInstance();
System.
out
.println(calendar.getTime());
}
}
结果:
当前时间Thu Nov 21 19:14:49 CST 2013
Thu Nov 21 19:14:50 CST 2013
意思就是Calendar类的getTime就是取得当前的时间
3.取得当前的系统时间
public
class
DateDemo2 {
public
static
void
main(String[] args) {
Calendar calendar=
null
;
//声明对象
calendar=
new
GregorianCalendar();
//子类为其实例化
System.
out
.println(calendar.get(Calendar.
YEAR
)+
"年"
+
calendar.get(Calendar.
MONTH
)+
"月"
+calendar.get(Calendar.
DAY_OF_MONTH
)+
"日"
+
calendar.get(Calendar.
HOUR_OF_DAY
)+
"时"
+calendar.get(Calendar.
MINUTE
)+
"分"
+
calendar.get(Calendar.
SECOND
)+
"秒"
+calendar.get(Calendar.
MILLISECOND
)+
"毫秒"
);
}
}
结果:
2013年10月21日19时24分18秒482毫秒
看到代码是不是很长,Date类还有其他类来格式化它
三.DateFormat类
此类的作用就是用来格式化时间的
看源码:
public
abstract
class
DateFormat
extends
Format {
public
final
static
DateFormat getInstance () {
return
getDateTimeInstance(
SHORT
,
SHORT
);
}
下面是它的常用方法
实现代码:
public
class
DateDemo3 {
public
static
void
main(String[] args) {
DateFormat dateFormat=
null
;
DateFormat dateFormat2=
null
;
dateFormat=DateFormat. getDateInstance();
//获取时间对象
System.
out
.println(
"日期"
+dateFormat);
dateFormat2=DateFormat. getDateTimeInstance();
//获取日期时间对象
System.
out
.println(
"日期-时间"
+dateFormat2);
System.
out
.println(
"格式化日期"
+dateFormat.format(
new
Date()));
System.
out
.println(
"格式化日期时间"
+dateFormat2.format(
new
Date()));
}
}
结果:
日期java.text.SimpleDateFormat@ef7951d7
日期-时间java.text.SimpleDateFormat@d9235b7f
格式化日期2013-11-21
格式化日期时间2013-11-21 19:38:52
如果你还觉得不是中文的,下面的代码能满足你:
public
class
DateDemo4 {
public
static
void
main(String[] args) {
DateFormat dateFormat=
null
;
DateFormat dateFormat2=
null
;
//取得日期,并设置格式
dateFormat=DateFormat. getDateInstance(DateFormat.
YEAR_FIELD
,
new
Locale(
"zh"
,
"CN"
));
//取得日期时间,并设置格式
dateFormat2=DateFormat. getDateTimeInstance(DateFormat.
YEAR_FIELD
,DateFormat.
ERA_FIELD
,
new
Locale(
"zh"
,
"CN"
));
System.
out
.println(
"格式化的日期"
+dateFormat.format(
new
Date()));
System.
out
.println(
"格式化的日期时间"
+dateFormat2.format(
new
Date()));
}
}
结果:
格式化的日期2013年11月21日
格式化的日期时间2013年11月21日 下午07时44分40秒 CST
如果你还不满意,那就只有用DateFormat的子类SimpleDateFormat
四.
SimpleDateFormat类
例子:
public
class
DateDemo5 {
public
static
void
main(String[] args) {
String str=
"2013-11-21 19:51:30.345"
;
//定义日期字符串
//定义时间日期模板1
String pat1=
"yyyy-MM-dd HH:mm:ss.SSS"
;
String pat2=
"yyyy年MM月dd日HH时mm分ss秒SSS毫秒"
;
SimpleDateFormat simpleDateFormat=
new
SimpleDateFormat(pat1);
//实例化模板
SimpleDateFormat simpleDateFormat2=
new
SimpleDateFormat(pat2);
Date d=
null
;
try
{
d= simpleDateFormat.parse(str);
//将字符串给的时间提取出来
}
catch
(ParseException e) {
//
TODO
Auto-generated catch block
e.printStackTrace();
}
System.
out
.println(simpleDateFormat2.format(d));
//将日期变为新格式
}
}
结果:
2013年11月21日19时51分30秒345毫秒
补充:
SimpleDateFormat类常常用来提取String类的时间