一:使用Date和SimpleDateFormat类表示时间
处理日期和时间的相关数据,我们可以使用java.util包中的Date类。使用Date类的默认无参构造方法创建出的对象表示当前时间。
可以使用SimpleDateFormat类来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可以将文本转换为日期。
packagecn.test;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.text.ParseException;public classDemo {public static voidmain(String[] args) {
Date d= newDate();
System.out.println(d);
//将日期转换为指定格式的文本
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today=sdf.format(d);
System.out.println(today);
//将文本转换为日期
String day= "2017年03月27日 16:02:30";
SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");try{
Date date=df.parse(day);
System.out.println(date);
}catch(ParseException e) {
System.out.println(e.getMessage());
}
}
}
运行结果:
Mon Mar 27 16:14:58 CST 2017
2017-03-27 16:14:58
Mon Mar 27 16:02:30 CST 2017
注意:调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,及ParseException,因此需要进行异常处理;使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包。
二:Calendar类
Date类最主要的作用就是获取当前时间,同时这个类里面也具有设置时间以及一些其他功能,但由于类本身设计的问题,不建议使用,推荐使用Calendar类进行日期和时间的处理。
java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();
packagecom.test;importjava.util.Calendar;importjava.util.Date;public classDemo {public static voidmain(String[] args) {
Calendar c=Calendar.getInstance();int year =c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH) + 1;int day =c.get(Calendar.DAY_OF_MONTH);int hour =c.get(Calendar.HOUR_OF_DAY);int minute =c.get(Calendar.MINUTE);int second =c.get(Calendar.SECOND);
System.out.println("现在的时间是:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" +second);
}
}
Calendar 类提供了getTime()方法用来获取Date对象,完成Calendar和Date的转换,还可以通过getTimeInMillis()方法获取此Calendar的时间值,以毫秒没单位。
packagecom.test;importjava.util.Calendar;importjava.util.Date;public classDemo {public static voidmain(String[] args) {
Calendar c=Calendar.getInstance();
Date date=c.getTime();
Long time=c.getTimeInMillis();
System.out.println(date);
System.out.println(time);
}
}
运行结果:
Mon Mar 27 22:02:55 CST 2017
1490623375468
Math类
Math类位于java.lang包中,包含用户执行基本数学运算的方法,Math类的所有方法都是静态方法,所有可以直接使用类名.方法名,如:Math.round();
常用的方法:
使用Date和SimpleDateFormat类表示时间
处理日期和时间的相关数据,我们可以使用java.util包中的Date类。使用Date类的默认无参构造方法创建出的对象表示当前时间。
可以使用SimpleDateFormat类来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可以将文本转换为日期。
packagecn.test;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.text.ParseException;public classDemo {public static voidmain(String[] args) {
Date d= newDate();
System.out.println(d);
//将日期转换为指定格式的文本
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today=sdf.format(d);
System.out.println(today);
//将文本转换为日期
String day= "2017年03月27日 16:02:30";
SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");try{
Date date=df.parse(day);
System.out.println(date);
}catch(ParseException e) {
System.out.println(e.getMessage());
}
}
}
运行结果:
Mon Mar 27 16:14:58 CST 2017
2017-03-27 16:14:58
Mon Mar 27 16:02:30 CST 2017
注意:调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,及ParseException,因此需要进行异常处理;使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包。
Calendar类
Date类最主要的作用就是获取当前时间,同时这个类里面也具有设置时间以及一些其他功能,但由于类本身设计的问题,不建议使用,推荐使用Calendar类进行日期和时间的处理。
java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();
packagecom.test;importjava.util.Calendar;importjava.util.Date;public classDemo {public static voidmain(String[] args) {
Calendar c=Calendar.getInstance();int year =c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH) + 1;int day =c.get(Calendar.DAY_OF_MONTH);int hour =c.get(Calendar.HOUR_OF_DAY);int minute =c.get(Calendar.MINUTE);int second =c.get(Calendar.SECOND);
System.out.println("现在的时间是:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" +second);
}
}
Calendar 类提供了getTime()方法用来获取Date对象,完成Calendar和Date的转换,还可以通过getTimeInMillis()方法获取此Calendar的时间值,以毫秒没单位。
packagecom.test;importjava.util.Calendar;importjava.util.Date;public classDemo {public static voidmain(String[] args) {
Calendar c=Calendar.getInstance();
Date date=c.getTime();
Long time=c.getTimeInMillis();
System.out.println(date);
System.out.println(time);
}
}
运行结果:
Mon Mar 27 22:02:55 CST 2017
1490623375468
Math类
Math类位于java.lang包中,包含用户执行基本数学运算的方法,Math类的所有方法都是静态方法,所有可以直接使用类名.方法名,如:Math.round();
三:
private static void formatDataTest() {
/*
* 日期转期望格式的字符串
*/
//HH 和 hh 的差别:前者是24小时制,后者是12小时制。
StringBuilder sb = new StringBuilder();
sb.append("yyyy年MM月dd日 HH:mm:ss")
.append(" 上下午标志 a")
.append(" E")
.append(" 一年中的第D天")
.append(" 一月中的第F个星期")
.append(" 一年中的第w个星期")
.append(" 一月中的第W个星期")
.append(" Z")
.append(" z");
SimpleDateFormat sdf = new SimpleDateFormat(sb.toString());
String dateString = sdf.format(new Date());
System.out.println(dateString);
/*
* 字符串转日期
*/
Date date;
try {
date = sdf.parse(dateString);
System.out.println(date);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
}
日期和时间模式:
yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区