Date 代表了一个特定的时间,精确到毫秒
方法名 | 说明 |
---|---|
public Date() | 分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精确到毫秒 |
public Date(long date) | 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数 |
简单使用一下:
Date d1 = new Date();
System.out.println(d1);
//Fri Oct 22 00:06:35 CST 2021,现在的中国时间
long date = 1000*60*60;//1000毫秒*60*60 = 1小时
Date d2 = new Date(date);
System.out.println(d2);
//Thu Jan 01 09:00:00 CST 1970。
//因为我们中国的时区在东八区。所以是 08:00加上1小时。
Date类的常用方法
方法名 | 说明 |
---|---|
public long getTime() | 获取的是日期对象从1970年1月1日00:00:00到现在的毫秒值 |
public void setTime(long time) | 设置时间,给的是毫秒值 |
写一下:
//无参构造,默认Date d1 = new Date(System.currentTimeMillis());
//System.currentTimeMillis()也是获取1970年到现在的时间(毫秒)
Date d1 = new Date();
System.out.println(d1);//当前时间
System.out.println(d1.getTime()*1.0/60/60/24/365/1000 + "年");//1970年到现在的时间(年)
System.out.println("----------------");
long time = 1000*60*60;//1小时
d1.setTime(time);
System.out.println(d1);//结果与上面代码同理
d1.setTime(System.currentTimeMillis());
System.out.println(d1);
输出:
Fri Oct 22 00:29:58 CST 2021
51.84023968673896年
----------------
Thu Jan 01 09:00:00 CST 1970
Fri Oct 22 00:29:58 CST 2021
SimpleDateFormat 类概述
SimpleDateFormat 是一个具体类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式和解析
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从 ‘A’ 到 ‘Z’ 以及从 ‘a’ 到 ‘z’ 引号的字母被解释为表示日期或时间字符串的组件的模式字母
常用:
字母 | 单位 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 小时 |
m | 分 |
s | 秒 |
构造方法名 | 说明 |
---|---|
public SimpleDateFormat() | 构造一个SimepleDateFormat,使用默认模式和日期格式 |
public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat,使用给定的模式和默认的日期格式 |
格式化和解析日期
方法 | 说明 |
---|---|
格式化:public Final String format(Date date) | 将日期格式化成日期/时间字符串 |
解析:public Date parse(String sourse) | 从给定字符串的开始解析文本以生成日期 |
小练习:日期工具类
需求:定义一个日期工具类(DaateUtils),包含两种方法:
- 把日期Date转换为指定格式的字符串;
- 把字符串解析为指定格式的日期;
然后定义一个测试类(Demo),测试日期工具类的方法
日期工具类(DaateUtils):
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
//构造方法私有
private DateUtils(){}
//成员方法静态
//把日期转变为指定格式
public static String dateToString(Date d,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(d);
return s;
}
//把字符串解析为指定的日期
public static Date stringToDate(String s,String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date d = new Date();
d = sdf.parse(s);
return d;
}
}
Demo:
import java.text.ParseException;
import java.util.Date;
public class Demo {
public static void main(String[] args) throws ParseException {
//测试1
Date d = new Date();
String format1 = "yyyy年MM月dd日 HH时mm分ss秒";
String s = DateUtils.dateToString(d,format1);
System.out.println(s);
Date dd = DateUtils.stringToDate(s,format1);
System.out.println(dd);
System.out.println("----------------");
//测试2,换一种格式
String ss = "2001-03-14 03:33:20";
String format2 = "yyyy-MM-dd HH:mm:ss";
d = DateUtils.stringToDate(ss,format2);
System.out.println(d);
System.out.println("----------------");
//测试3,再换一种格式
String format3 = "HH:mm:ss";
//d = DateUtils.stringToDate(s,format);
//System.out.println(d);
// 报错,String s 的格式要与 format 一致
String sss = DateUtils.dateToString(d,format3);
System.out.println(sss);
}
}