来,继续啊,下面我们来学习Date类和SimpleDateFormat类,它们涉及到两个案例:手机日期和时间显示和考勤查询
先来看手机日期和时间显示案例:获取当前时间,按照指定的格式显示在窗体上。
也就是在这里我们要进行把一个Date类型的数据,按照指定的格式,变成一个字符串数据显示出来。
再来看考勤查询案例,我们要通过输入的指定格式的日期字符串数据,得到Date类型的数据。
所以,我们学习Date类和SimpleDateFormat类的重点就是为了把Date类型数据和String类型数据之间进行按照指定格式进行转换。
首先呢,我们先来学习一下Date类,而关于Date类呢,我们先到帮助文档中去查看,然后回来总结,最后到IDEA中去演示。
来,打开我们准备好的帮助文档,关于通过帮助文档查看Date,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了Date类之后,下面我们回到资料中总结一下:
Date:
构造方法:
知道了(的构造方法后,我们到IDEA中去使用一下:
xxxxxxxxxx
import java.util.Date;
/*
构造方法:
Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒
Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
*/
public class DateDemo {
public static void main(String[] args) {
//Date():分配 Date对象并对其进行初始化,使其表示分配时间,测量 Date到毫秒
Date d1 = new Date();
System.out.println(d1);
//Date(long date):分配 Date对象并初始化它以表示自标准基准时间以来的指定毫秒数,即1970年1月1日00:00:00
Date d2 = new Date(1000 * 60 * 60);
System.out.println(d2);
}
}
而目前呢,Date类中没有我们要使用的成员方法,所以,我们也就不看它的成员方法了。
讲解完毕后,大家赶快动手练习一下吧。
来,继续啊,下面我们来学习SimpleDateFormat这个类。
打开我们准备好的帮助文档,关于通过帮助文档查看SimpleDateFormat,大家按照老师讲解的API的使用步骤看看即可。
通过文档了解了SimpleDateFormat类之后,下面我们回到资料中总结一下:
SimpleDateFormat:
常用的模式字母及对应关系如下:
构造方法:
格式化(从 Date 到 String ):
解析(从 String 到 Date ):
了解了SimpleDateFormat类,以及Date和String相互转换的方法后,我们到IDEA中去体验一下:
xxxxxxxxxx
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
构造方法
SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化(从 Date 到 String )
String format(Date date):将日期格式化成日期/时间字符串
解析(从 String 到 Date )
Date parse(String source):从给定字符串的开始解析文本以生成日期
*/
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//格式化(从 Date 到 String )
Date d = new Date();
//SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
// SimpleDateFormat sdf = new SimpleDateFormat();
//SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
System.out.println("-----------------");
//解析(从 String 到 Date )
String ss = "2021-10-27 11:11:11";
// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:根据下列要求,完成手机日期和时间显示
要求:以当前时间根据格式分别获取日期和时间显示
知道了手机日期和时间显示案例的需求和要求后,下面我们到IDEA中去实现一下:
xxxxxxxxxx
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
手机日期和时间显示
*/
public class ShowDateTime {
public static void main(String[] args) {
//创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("手机日期和时间显示");
jf.setSize(400, 300);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop(true);
jf.setLayout(null);
//提示日期
JLabel dateLable = new JLabel("日期");
dateLable.setBounds(50, 50, 100, 20);
jf.add(dateLable);
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
String dateString = sdf.format(d);
//按照格式显示日期的字符串
JLabel showDateLable = new JLabel(dateString);
showDateLable.setBounds(50, 80, 200, 20);
jf.add(showDateLable);
//提示时间
JLabel timeLable = new JLabel("时间");
timeLable.setBounds(50, 150, 100, 20);
jf.add(timeLable);
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm");
String timeString = sdf2.format(d);
//按照格式显示时间的字符串
JLabel showTimeLable = new JLabel(timeString);
showTimeLable.setBounds(50, 180, 200, 20);
jf.add(showTimeLable);
jf.setVisible(true);
}
}
讲解完毕后,大家赶快动手练习一下吧。
需求:根据下列要求,完成考勤查询的逻辑
要求:根据开始时间和结束时间的字符串解析为日期提示出来
知道了考勤查询案例的需求和要求后,下面我们到IDEA中去实现一下:
这里用到了日历控件类,需要大家把DateChooser.java类准备好
xxxxxxxxxx
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
考勤查询
*/
public class AttendanceQuery {
public static void main(String[] args) {
//创建窗体对象
JFrame jf = new JFrame();
jf.setTitle("考勤查询");
jf.setSize(400, 300);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop(true);
jf.setLayout(null);
//显示考勤日期的文本
JLabel dateLable = new JLabel("考勤日期");
dateLable.setBounds(50, 20, 100, 20);
jf.add(dateLable);
//显示开始时间文本
JLabel startDateLable = new JLabel("开始时间");
startDateLable.setBounds(50, 70, 100, 20);
jf.add(startDateLable);
DateChooser dateChooser1 = DateChooser.getInstance("yyyy/MM/dd");
DateChooser dateChooser2 = DateChooser.getInstance("yyyy/MM/dd");
//开始时间输入框
JTextField startDateField = new JTextField();
startDateField.setBounds(50, 100, 100, 20);
dateChooser1.register(startDateField);
jf.add(startDateField);
//显示结束时间文本
JLabel endDateLable = new JLabel("结束时间");
endDateLable.setBounds(250, 70, 100, 20);
jf.add(endDateLable);
//结束时间输入框
JTextField endDateField = new JTextField();
endDateField.setBounds(250, 100, 100, 20);
dateChooser2.register(endDateField);
jf.add(endDateField);
//确定按钮
JButton confirmButton = new JButton("确定");
confirmButton.setBounds(250, 180, 60, 20);
jf.add(confirmButton);
confirmButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
//获取开始时间和结束时间的字符串
String startDateString = startDateField.getText();
String endDateString = endDateField.getText();
try {
Date startDate = sdf.parse(startDateString);
Date endDate = sdf.parse(endDateString);
JOptionPane.showMessageDialog(jf,startDate+"\n"+endDate);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
});
jf.setVisible(true);
}
}
这里我们仅仅是演示了考勤查询的日期数据处理,将来呢,我们就可以根据这两个日期数据到考勤查询系统中去查询考勤信息了。
讲解完毕后,大家赶快动手练习一下吧。