Date【类】&Calendar【类】
一.Date类
-
java.util包中,表示特定瞬间,精确到毫秒
-
毫秒值:1000毫秒=1秒
毫秒值的作用:对时间和天数进行计算
时间转换为毫秒 时间原点:1970年1月1日00:00:00(英国格林威治) 计算当前日期到时间原点一共经历了多少毫秒 注意:中国属于东八区,会把时间增加8个小时
毫秒转化为日期 1天=24x60x60=86400秒=86400000毫秒
System.currentTimeMillis(); //获取当前系统时间到1970年1月1日00:00:00经历了多少瞬间
DateFormat:对日期进行格式化 -
抽象类,要使用SimpleDateFormat【类】
构造方法 SimpleDateFormat(String pattern)
String pattern 传递指定的模式
区分大小写:y->年 M->月 d->日 H->时 m->分 s->秒 S->毫秒
模式中的字母不能改变,连接模式的符号可以改变packagecn.com.abner.date;
import java.util.Date;
public class Demo {
public void show() {
Date d=new Date(1557462206838L); //将毫秒值转为日期 Fri May 10 12:23:26 CST 2019
System.out.println(d);
}
public void show1() {
Date s=new Date(); //当前系统时间 Fri May 10 17:55:54 CST 2019
System.out.println(s);
}
public void show2() {
Date d=new Date(); //当前系统时间到原点经历多少毫秒 1557482154891
long time=d.getTime();
System.out.println(time);
}
public static void main(String[] args) {
System.out.println(System.currentTimeMillis()); //当前系统时间到原点经历多少毫秒 1557482154851
Demo a=new Demo();
a.show();
a.show1();
a.show2();
}
}
format方法:将指定日期转换为指定文本
1.//创建SimpleDateFormat(String pattern)对象
2.//调用SimpleDateFormat中的format方法将指定日期转换为指定文本
例
package cn.com.abner.date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo1 {
public static void main(String[] args) {
show();
}
public static void show () {
//创建SimpleDateFormat(String pattern)对象
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//调用SimpleDateFormat中的format方法将指定日期转换为指定文本
Date d=new Date();
String time=s.format(d);
System.out.println(d);
System.out.println(time);
}
}
parse方法:将文本转化为日期
1.//创建SimpleDateFormat(String pattern)对象
2.//调用SimpleDateFormat中的parse方法:将文本转化为日期
注意:会声明一个解析异常
package cn.com.abner.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo2 {
public static void main(String[] args) throws ParseException { //parse方法抛出异常
show();
}
public static void show() throws ParseException { //parse方法抛出异常
//创建SimpleDateFormat(String pattern)对象
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//调用SimpleDateFormat中的parse方法:将文本转化为日期
Date date=s.parse("2019-05-10 14:16:24");
System.out.println(date);
}
}
packagecn.com.abner.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
计算人出生了多少天
思路:1.输入出生日期
2.将日期转换为date值
3.将date格式转化为毫秒值
4.将当前毫秒值-出生毫秒值
5.将毫秒值转化为天
*/
public class Demo3 {
public static void main(String[] args) throws ParseException {
Scanner input=new Scanner(System.in);
System.out.println("请输入姓名");
String name=input.next();
//1.输入出生日期
System.out.println("请输入出生时间(格式为yyyy-MM-dd)");
String SR=input.next();
//2.将日期转换为date值
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd");
Date date=s.parse(SR);
//3.将date格式转化为毫秒值
long time=date.getTime();
//4.将当前毫秒值-出生毫秒值
long SJ=System.currentTimeMillis()-time;
//5.将毫秒值转化为天
int day=(int) (SJ/1000/60/60/24);
System.out.println(name+"出生了"+day+"天");
}
}
二.Calendar【类】
java.util包中,日历类
抽象类,一个抽象方法getInstance();返回Calendar【类】子类对象 //获得一个日历
对象的方法
1.对象.get(Calendar.YEAR); //返回给定日历字段的值 参数:传递指定日历字段
2.对象.set(Calendar.YEAR, 9999); //给指定字段设置值 参数:传递指定日历字段 ,指定字段的值
3.对象.add(Calendar.YEAR, 1); //给指定字段的时间量增加/减少指定的值 参数:传递指定日历字段 正数增加,负数减少
4.Date date=c.getTime(); //把日历对象转换为日期对象
package cn.com.abner.calender;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
show1();
System.out.println("----------------------------------------------------------");
show2();
System.out.println("----------------------------------------------------------");
show3();
System.out.println("----------------------------------------------------------");
show4();
}
//获得指定字段的值 参数:传递指定日历字段
public static void show1() {
Calendar c=Calendar.getInstance();
System.out.println(c); //获得一个日历
//java.util.GregorianCalendar[time=1557475009718,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=10,DAY_OF_YEAR=130,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=56,SECOND=49,MILLISECOND=718,ZONE_OFFSET=28800000,DST_OFFSET=0]
int year=c.get(Calendar.YEAR); //返回给定日历字段的值 参数:传递指定日历字段
System.out.println(year); //2019
int month=c.get(Calendar.MONTH); //返回给定日历字段的值
System.out.println(month); //4 西方从0~11
}
//给指定字段设置值 参数:传递指定日历字段 ,指定字段的值
public static void show2() {
Calendar c=Calendar.getInstance();
//获得一个日历
//设置年为:9999
c.set(Calendar.YEAR, 9999); //参数:传递指定日历字段 ,指定字段的值
//同时设置年月日
c.set(1994, 10, 23);
int year=c.get(Calendar.YEAR); //返回给定日历字段的值
System.out.println(year); //9999/1994
int month=c.get(Calendar.MONTH); //返回给定日历字段的值
System.out.println(month); //4 西方从0~11
}
//给指定字段的时间量增加/减少指定的值
//参数:传递指定日历字段 正数增加,负数减少
public static void show3() {
Calendar c=Calendar.getInstance();
//获得一个日历
//给指定字段的时间量增加/减少指定的值
c.add(Calendar.YEAR, 1);
c.add(Calendar.MONTH, -1);
int year=c.get(Calendar.YEAR); //返回给定日历字段的值 参数:传递指定日历字段
System.out.println(year); //2020
int month=c.get(Calendar.MONTH); //返回给定日历字段的值
System.out.println(month); //3 西方从0~11
}
//把日历对象转换为日期对象
public static void show4() {
Calendar c=Calendar.getInstance();
Date date=c.getTime();
System.out.println(date); //Fri May 10 17:11:21 CST 2019
long time=date.getTime();
System.out.println(time); //1557479481373
SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time1=s.format(time);
System.out.println(time1); //2019-05-10 17:11:21
}
}