Calendar类:日历类
java.util.Calendar类:日历类
Calendar 类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR,MONTH,DAY_OF_MONTH,HOUR)
Calendar类无法直接创建对象,里面有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。
static Calendar getInttance() 使用默认时区和语言环境获取得一个日历。
*/
public class Demo01Calendar {
public static void main(String[]args){
//用一个父类,接受一个子类对象,就是
Calendar c = Calendar.getInstance();//多态
System.out.println(c);
}
}
Calendar类得常用成员方法:
public int get(int field);返回给定日历字段得值
public void set(int field, int value);将给定得日历字段设置为定值。
public abstract void add(int field, int amount);根据日历规则,为给定得日历字段添加或减去指定得时间量。
public Date getTime();返回一个表示此Calendar时间值(从历元到现在得毫秒偏移量)得Date对象。
也就是:get获取,set设置,add增加或者减少,getTime把日历变成日期
成员方法得参数:
int field:日历类的字段,可以使用Calendar类的静态成员变量获取
public static final int YEAR = 1; 年
public static final int MONTH =2;月
public static final int DATE = 5;月中的某一天
public static final int DAY_OF_MONTH = 5;月中的某一天
public static final int HOUR = 10; 时
public static final int MINUTE = 12;分
public static final int SECOND = 13;秒
public class Demo02Calendar {
public static void main(String[] args){
// demo01();1号
// demo02();//2号
// demo03();//3号add方法
demo04();//
}
/*
public Date getTime();返回一个表示此Calendar时间值(从历元到现在得毫秒偏移量)得Date对象。
把日历对象,转换为日期对象
*/
private static void demo04(){
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
Date date = c.getTime();//返回就时一个日期
System.out.println(date);
}
/*
public abstract void add(int field, int amount):根据日历规则,为给定得日历字段添加或减去指定得时间量。
把指定的字段增加/减少指定的值
参数:
int field:传递指定的日历字段(YEAR,MONTH...)
int amount :增加/减少指定的值
正数:增加
负数:减少
*/
private static void demo03(){
Calendar c = Calendar.getInstance();
//把年 增加2年
c.add(Calendar.YEAR,2);
//把月份减少3个月
c.add(Calendar.MONTH,-3);
int year = c.get(Calendar.YEAR);//调用get方法,使用静态的成员变量,返回的就是整数
System.out.println(year);
int month = c.get(Calendar.MONTH);//返回的就月份(西方的月份),
System.out.println(month);
int date = c.get(Calendar.DATE);//也是月中的某一天
System.out.println(date);//输出的结果是一样,用那个都可以
}
/*2号
public void set(int field, int value):将指定的日历字段设置为给定值。
参数:
int field:传递指定的日历字段(YEAR,MONTH...)
int value:给指定字段设置的值
*/
private static void demo02(){
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
//设置年为9999
c.set(Calendar.YEAR,9999);
//设置 月为9月
c.set(Calendar.MONTH,9);
//设置 日为9日
c.set(Calendar.DATE,9);
//同时设置年月日,可以使用set的方法(重载方法)
c.set(8888,8,8);
int year = c.get(Calendar.YEAR);//调用get方法,使用静态的成员变量,返回的就是整数
System.out.println(year);
int month = c.get(Calendar.MONTH);//返回的就月份(西方的月份),
System.out.println(month);
int date = c.get(Calendar.DATE);//也是月中的某一天
System.out.println(date);//输出的结果是一样,用那个都可以
}
/* 1号
public int get(int field):返回给定字段的值。
参数:传递指定的日历字段(YEAR,MONTH...)
返回值:日历字段代表的具体的值
*/
private static void demo01(){
//使用getInstance方法获取Calendar对象
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);//调用get方法,使用静态的成员变量,返回的就是整数
System.out.println(year);//返回的就当年也就是今年、、2020
int month = c.get(Calendar.MONTH);//返回的就月份(西方的月份),
System.out.println(month);//西方的月份0-11.东方:1-12
// int date = c.get(Calendar.DAY_OF_MONTH);//月中的某一天
int date = c.get(Calendar.DATE);//也是月中的某一天
System.out.println(date);//输出的结果是一样,用那个都可以
}
}
java.util.Deta:表示日期和时间的类
java.util.Deta:表示日期和时间的类
类Deta 表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒,1000毫秒 = 1秒
特定的瞬间: 以恶搞时间点,一刹那时间
2088-08-08 09:55:33:333 瞬间
2088-08-08 09:55:33:333 瞬间
2088-08-08 09:55:33:333 瞬间
。。。。
毫秒值的作用:可以对时间和日期进行计算
2099-01-03 到2088-01-01 中间一共有多少天
可以把日期转换成毫秒进行计算,计算完毕,然后把毫秒装换为日期
把日期转换为毫秒:
当前的日期:2088-01-01
时间原点(0毫秒):在API 档中,1970年1月1日00:00:00(是英国格林威治的时间)
就是计算当前日期到时间原点之间一共经理了多少毫秒 (1597712653810)
注意事项:
中国属于东八区,会把时间增加8个小时
1970年1月1日08:00:00(中国时间是)
把毫秒转换为日期:(API文档)
1天= 24 * 60 *60 = 86400 秒 = 86400 * 1000 = 864000000 毫秒
public class Demo01Date {
public static void main(String[]args){
System.out.println(System.currentTimeMillis());//获取当前系统时间到1970年1月1日00:00:00经历了多少毫秒
}
}
import java.util.Date;
//Date类的构造方法和成员方法
//有两个构造方法和一个成员方法
public class Demo02Date {
public static void main(String[]args){
// demo01();空参数构造方法
// demo02();//带参数构造方法
demo03();//long getTime() 成员方法
}
//long getTime() 把日期装换为毫秒值(相当于currentTimeMillis()方法)
//返回自1970年1月1日00:00:00 GMT 以来此Date对象表示的毫秒数。
private static void demo03(){
Date date = new Date();
long time = date.getTime();//返回long类型的毫秒值
System.out.println(time);//1597714495502
}
//Date类的带参数构造方法
//Date(long date):传递毫秒值,把毫秒值转换为Date日期
private static void demo02(){
Date date = new Date(0L);
System.out.println(date);//Thu Jan 01 08:00:00 CST 1970
date = new Date(1597712653810L);
System.out.println(date);//Tue Aug 18 09:04:13 CST 2020
}
// Date类的空参数构造方法
// Date()获取当前系统的日期和时间
public static void demo01(){
Date date = new Date();
System.out.println(date);//Tue Aug 18 09:20:18 CST 2020
}
}
java.text.DateFormat:是日期/时间格式化「子类的抽象类」
格式化(也就是日期->文本),解析(文本->日期)
成员方法:
String format(Date date) 按照的指定的模式,把Date日期,格式化为符合模式的字符串。
Date parse(String source) 把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法孩直接创建对象使用,可以使用DateFormat类的子类
//子类 , //继承
java.text.SimpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
构造方法的参数:
String pattern :传递指定的模式
模式:区分大小写的
y 年
M 月
d 日
H 小时
m 分
s 秒
S 毫秒
写对应的模式,会把模式替换为对应的日期和时间
“yyy-MM-dd HH:mm:ss”
注意事项:
模式中的字母不能更改,连接模式的符号可以改变
“yyy年MM月dd日 HH时mm分ss秒”
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo01DateFormat { //异常处理
public static void main(String[]args) throws ParseException{
// demo01();
demo02();
}
/*
使用DateFormat类中的方法parse,把文本解析为日期
使用步骤:
1,创建SimpleDateFormat对象,构造方法中传递指定的模式
2,调用SimpleDateFormat对象中的方法parse,把符合构造方法中字符串,解析为Date日期
注意事项:
public Date parse(String source)throws ParseException
parse方法声明类一个异常叫ParseException
如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
调用一个抛出类异常的方法,就必须处理这个异常,要么throws继续抛出这个异常
要么try catch自己处理
*/ //异常处理
private static void demo02() throws ParseException{
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat( "yyy年MM月dd日 HH时mm分ss秒" );
//2,调用SimpleDateFormat对象中的方法parse,把符合构造方法中字符串,解析为Date日期
// Date parse(String source) 把符合模式的字符串,解析为Date日期
Date date = sdf.parse("2020年08月18日 13时29分22秒");
System.out.println(date);//Tue Aug 18 13:29:22 CST 2020
}
/*
使用DateFormat类中的方法format,把日期格式化为文本
使用步骤:
1,创建SimpleDateFormat对象,构造方法中传递指定的模式
2,调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)式化为符合模式的字符串(文本)
*/
private static void demo01(){
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat( "yyy年MM月dd日 HH时mm分ss秒" );
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
//String format(Date date)按照指定模式,把Date日期,格式化为符合模式的字符串
Date date = new Date();
String d = sdf.format(date);
System.out.println(date);//Tue Aug 18 13:29:22 CST 2020
System.out.println(d);//2020年08月18日 13时29分22秒
}
}