程序开发中主要使用 java.util 包中的 Date、Calendar 以及 java.text 包中的 SimpleDateFormat。
一、Date 类
Date 类是一个较为简单的操作类,使用直接使用 java.util.Date 类的构造方法并进行输出就可以得到一个完整的日期:
public Date()
得到系统日期:
import java.util.Date;
public class Test{
public static void main(String[] args) {
Date date = new Date();//实例化 Date 类对象
System.out.println("当前日期为:" + date);//输出日期
}
}
- 2
- 3
- 4
- 5
- 6
- 7
这里显示的日期样式并不符合平常看到的格式,要想按照用户自己的格式显示时间可以使用 Calendar 类完成操作。
二、Calendar 类
Calendar 本身是一个抽象类,因此必须依靠对象的多态性,通过子类进行父类的实例化操作,Calendar 的子类是 GregorianCalendar 类。
Calendar 类中的常量:
Calendar 类中提供的方法:
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test{
public static void main(String[] args) {
Calendar calendar = null;//声明一个 Calendar 对象
calendar = new GregorianCalendar();//通过子类为其实例化
System.out.println("年:" + calendar.get(Calendar.YEAR));
System.out.println("月:" + calendar.get(Calendar.MONTH));
System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + calendar.get(Calendar.SECOND));
System.out.println("秒:" + calendar.get(Calendar.MILLISECOND));
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
三、DateFormat 类
为了使显示的格式符合中国人的习惯要求,可以为此类进行格式化操作
DateFormat 类与 MessageFormat 类都属于 Fromat 类的子类,专门 用于格式化数据使用。
public abstract class DateFormat extends Fromat
可以看出 DateFormat 类是一个抽象类,所以也无法直接实例化,但是在此抽象类中提供了一个静态方法,可以直接取得本类的实例。
import java.text.DateFormat;
import java.util.Date;
public class Test{
public static void main(String[] args) {
DateFormat df1 = null;//声明 DateFormat 类对象
DateFormat df2 = null;//声明 DateFormat 类对象
df1 = DateFormat.getInstance();//取得日期
df2 = DateFormat.getDateTimeInstance();//取得日期时间
System.out.println("DATE:" + df1.format(new Date()));//格式化日期
System.out.println("DATETIME:" + df2.format(new Date()));//格式化日期
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
这里虽然显示了时间,但是仍然不是合理的中文格式
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Test{
public static void main(String[] args) {
DateFormat df1 = null;//声明 DateFormat 类对象
DateFormat df2 = null;//声明 DateFormat 类对象
df1 = DateFormat.getDateInstance
(DateFormat.YEAR_FIELD,new Locale("zh","CN"));//取得日期,并设置日期显示格式
df2 = DateFormat.getDateTimeInstance
(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN"));//取得日期时间并设置格式
System.out.println("DATE:" + df1.format(new Date()));//格式化日期
System.out.println("DATETIME:" + df2.format(new Date()));//格式化日期
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
这里的日期虽然已经被格式化,但是如果想要得到用户自己定义的日期格式,必须通过 DateFormat 的子类,SimpleDateFormat 类完成
四、SimpleDateFormat 类
日期格式化模板标记:
SimpleDateFormat 类的常用方法:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test{
public static void main(String[] args) {
String strDate = "https://files.jxasp.com/image/2008-10-19 10:11:30.345";//定义日期时间的字符串
// 准备第一个模板,从字符串中提取数字
String pat1 = "yyyy-MM-dd HH:mm:ss.SSS";
//准备第二个模板,将提取后的日期数字变为指定的格式
String pat2 = "yyyy年MM月dd日HH时mm分ss秒SSS毫秒";
SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);//实例化模板对象
SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);//实例化模板对象
Date d = null;
try{
d = sdf1.parse(strDate);//将给定的字符串中的日期提取出来
}catch (ParseException e){//如果提供的字符串格式有错误,则进行异常处理
e.printStackTrace();
}
System.out.println(sdf2.format(d));//将日期变为新的格式
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
程序中,首先使用第一个模板将字符串中表示的日期数字取出,也就是实现了 String 向 Date 的转型操作,然后使用第二个模板将这些日期数字重新转化为新的格式表示。
五、取得完整日期(示例)
import java.text.SimpleDateFormat;
import java.util.Date;
class DateTime{
//声明日期格式化操作对象,直接对new Date() 进行实例化
private SimpleDateFormat sdf = null;
//得到完整的日期,格式为:yyyy-MM-dd HH:mm:ss.SSS
public String getDate(){
this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return this.sdf.format(new Date());
}
//得到完整的日期,格式为:yyyy年MM月dd月HH时mm分ss秒SSS毫秒
public String getDateComplete(){
this.sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒");
return this.sdf.format(new Date());
}
public String getTimestamp(){//得到时间戳:yyyyMMddHHmmssSSS
this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return this.sdf.format(new Date());
}
}
public class Test{
public static void main(String[] args) {
DateTime dt = new DateTime();//实例化 DateTime 对象
System.out.println("系统日期:" + dt.getDate());
System.out.println("中文日期:" + dt.getDateComplete());
System.out.println("时间戳:" + dt.getTimestamp());
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31