String&时间格式
自动装箱和拆箱
- 装箱:把基本数据类型转换为对应的包装类类型
- 拆箱:把包装类类型转换为对应的基本数据类型
Date和SimpleDateFormat
- Date类表示特定的时刻,精度为毫秒
构造方法 - Date():分配Date对象并对其进行初始化。使其表示分配时间,测量Date到毫秒。
- Date(long date):分配Date对象并初始化它以表示自标准基础时间以来的指定毫秒数,即1970年1月1日00:00:00
simpleDateFormat - SimpleDateFormat 是一个用于以区域设置敏感的方法格式化和解析日期的具体类。重点学习日期格式化和解析。
- 日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z‘以及从’a‘到’z‘引号的字母被解释为表示日期或时间字符串组成部分的模式字母。
- 常见的模式字母对应关系
- 举例:2021年10月27日 11:11:11
- 模式:yyyy年MM月dd日 HH:mm:ss
字母 | 对应日期 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
构造方法
- SimpleDateFormat():构造一个SimpleDateFormat,使用默认模式和日期格式
- SimpleDateFormat(String pattern):构造一个SimpleDateFormat使用给定的模式和默认的日期格式
格式化(从Date到String) - String format(Date date):将日期格式化成日期/时间字符串
解析(从String到Date) - Date parse(String source):从给定字符串的开始解析文本以生成日期。
案例:手机日期和时间显示
-
如图示
-
代码实现
package com.itheima_02;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
/*手机日期的时间显示*/
public class ShoDateTimeTest {
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 dateLables = new JLabel("日期");
dateLables.setBounds(50, 50, 100, 20);
jf.add(dateLables);
// 创建当前系统时间
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 showDateTime = new JLabel("时间");
showDateTime.setBounds(50,150,100,20);
jf.add(showDateTime);
// 获取时间字符串
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);
}
}
案例二:考勤查询实现
- 代码实现
package com.itheima_02;
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 AttendanceQueryTest {
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 startLable = new JLabel("开始时间");
startLable.setBounds(50,70,100,20);
jf.add(startLable);
// 实例画日期组件
DateChooser dateChooser1 = DateChooser.getInstance("yyyy/MM/dd");
DateChooser dateChooser2 = DateChooser.getInstance("yyyy/MM/dd");
// 显示输入文本框
JTextField startField = new JTextField();
startField.setBounds(50,100,100,20);
dateChooser1.register(startField);
jf.add(startField);
// 显示结束时间
JLabel endLable = new JLabel("结束时间");
endLable.setBounds(250,70,100,20);
jf.add(endLable);
// 显示结束文本框
JTextField endField = new JTextField();
endField.setBounds(250,100,100,20);
dateChooser2.register(endField);
jf.add(endField);
// 确定按钮
JButton confirmButtton = new JButton("确定");
confirmButtton.setBounds(170,180,60,20);
jf.add(confirmButtton);
// 设置按钮监听事件
confirmButtton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// 获取开始时间结束时间的字符串
String startString =startField.getText();
String endString =endField.getText();
try {
Date startDate = sdf.parse(startString);
Date endDate = sdf.parse(endString);
JOptionPane.showMessageDialog(jf,startDate+"\n"+endDate);
} catch (ParseException ex) {
ex.printStackTrace();
}
}
});
jf.setVisible(true);
}
}