Date:
(1)定义
特定的瞬间,精确到毫秒。
(2)构造方法
Date():根据当前的默认毫秒值创建日期对象
Date(long date):根据给定的毫秒值创建日期对象
(3)常用API
public long getTime()
获取时间,以毫秒为单位
public void setTime(long time)
设置时间
eg:
public class DateDemo { public static void main(String[] args) { // 创建对象 Date d = new Date(); // 获取时间 long time = d.getTime(); System.out.println(time); // System.out.println(System.currentTimeMillis()); System.out.println("d:" + d); // 设置时间 d.setTime(1000); System.out.println("d:" + d); } }
SimpleDateFormat
(1)定义
DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat。
(2)构造方法
SimpleDateFormat():默认模式
SimpleDateFormat(String pattern):给定的模式
这个模式字符串该如何写呢?
通过查看API,我们就找到了对应的模式
年 y
月 M
日 d
时 H
分 m
秒 s
(3)Date和SimpleDateFormat类型转换
Date – String(格式化)
public final String format(Date date)
**
String – Date(解析)
public Date parse(String source)
eg:
public class DateFormatDemo { public static void main(String[] args) throws ParseException { // Date -- String // 创建日期对象 Date d = new Date(); // 创建格式化对象 // SimpleDateFormat sdf = new SimpleDateFormat(); // 给定模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // public final String format(Date date) String s = sdf.format(d); System.out.println(s); //String -- Date String str = "2008-08-08 12:12:12"; //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dd = sdf2.parse(str); System.out.println(dd); } }
一个例题:算一下从出生到现在活了多少天
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Demo6 { public static void main(String[] args) throws ParseException { //录入出生年月日 Scanner sc = new Scanner(System.in); System.out.println("输入出生年"); String year = sc.nextLine(); System.out.println("输入出生月"); String month = sc.nextLine(); System.out.println("输入出生日"); String date = sc.nextLine(); //将录入的年月日拼接成 yyyy-MM-dd 模板 String time = year + "-" + month + "-" + date; //创建 yyyy-MM-dd 模板的SimpleDateFormat对象sd SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); //将 SimpleDateFormat 自定义的时间戳 转换为Date类型的时间戳 Date d = sd.parse(time); //获取毫秒数 long start = d.getTime(); //获取当前时间 long end = new Date().getTime(); //计算天数 long t = (end -start)/1000/60/60/24; System.out.println(t); } }