目录
一、Date
二、Calendar
2.1Calendar与Date的相互转换
2.2获取时间的年、月、日、时、分、秒
2.3对时间的设置
2.4获取当前天数的最大值
2.5Calendar的时间运算
import java.util.Date;
/**
* Date日期创建
*/
public class TestDate {
public static void main(String[] args) {
//1、创建java.util.Date,可以表示一个具体的时间点
Date date = new Date();
System.out.println(date);
}
}
运行结果:
这样的运行结果很难让我们中国人看懂,所有我们可以使用SimpleDateFormat进行转换成我们能看懂的日期
/**
* Date日期创建
*/
public class TestDate {
public static void main(String[] args) {
//1、创建java.util.Date,可以表示一个具体的时间点
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(date);
System.out.println(format);
}
}
运行结果:
那么我怎么对Date的时间进行计算呢,我们就要用到Date本身的getTime()属性来获取Date底层维护的毫秒值
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Date日期创建
*/
public class TestDate {
public static void main(String[] args) {
//1、创建java.util.Date,可以表示一个具体的时间点
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = sdf.format(date);
System.out.println(format1);
long time = date.getTime();
//Date内部维护了一个long值,
// 这个long值是表示从1970年到目前为止的毫秒数
System.out.println(time);
//我们可以对这个毫秒值进行运行维护,比如说在这个基础上加上一天。
time += 24*60*60*1000;
//然后对我们处理后的long重新设置
date.setTime(time);
String format2 = sdf.format(date);
System.out.println(format2);
}
}
运行结果:
所有在Date中对时间的修改,只能从它底层维护的long值进行下手,十分的麻烦,本来我人就勤快,我肯定不会用这种方式来进行时间的计算。对于时间的计算,我更加倾向于Calendar
Calendar它本身是一个抽象类,规定了操作时间的相关方法。Calendar它内部提供了一个静态方法getInstance,该方法可以根据当前系统所在地区获取一个适用的实现类,通常返回的就是GregorianCalendar。话不多说,上代码
import java.util.Calendar;
/**
* 关于Calendar接口的使用
*/
public class DemoCalendar {
public static void main(String[] args) {
//默认创建出来就是当前的系统时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
}
}
运行结果:
比Date运行出来的结果还要难看,所以还是要进行转换,怎么进行转化,我们就要使用到
getTime()和setTime,它们分别有什么作用?
getTime():是将当前的Calendar所表示的时间以Date的形式返回======Calendar -> Date
setTime(date):是使当前Calendar表示给定的Date所表示的时间======Date -> Calendar
import java.util.Calendar;
import java.util.Date;
/**
* 关于Calendar接口的使用
*/
public class DemoCalendar {
public static void main(String[] args) {
//默认创建出来就是当前的系统时间
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//Calendar->Date
Date date = calendar.getTime();
System.out.println(date);
//Date->Calendar
calendar.setTime(date);
}
}
运行结果:
Calendar怎么进行运算,我们可以先看看,Calendar怎么获取当前的年、月、日、时、分、秒
可以用int get(int field)来获取给定时间分量所对应的值,时间分量应当使用Calendar提供的常量
import java.util.Calendar;
import java.util.Date;
/**
* 关于Calendar接口的使用
*/
public class DemoCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//获取年
int year = calendar.get(Calendar.YEAR);
System.out.println("当前年:"+year);
//获取月 注意,月从0开始
int moth = calendar.get(Calendar.MONTH);
System.out.println("当前月:"+moth+1);
//获取日
/*
* 跟天相关的常量
* DATE 月中的天
* DAY_OF_MONTH 月中的天
* DAY_OF_WEEK 星期中的天
* DAY_OF_YEAR 年中的天
*/
int day = calendar.get(Calendar.DATE);
System.out.println("本月的当前天:"+day);
//获取时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println("当前时:"+hour);
//获取分
int m = calendar.get(Calendar.MINUTE);
System.out.println("当前分钟:"+m);
//获取秒
int s = calendar.get(Calendar.SECOND);
System.out.println("当前秒:"+s);
System.out.println(year + "-" + (moth + 1) + "-" + day + " " + hour + ":" + m + ":" + s);
}
}
运行结果:
当然,Calendar也提共了对于指定时间分量设置值得方法 void set(int field,int value)
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 关于Calendar接口的使用
*/
public class DemoCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
/**
* 举个案例,设置一个时间值为2008-08-08 20:08:08
*/
calendar.set(Calendar.YEAR, 2008);
calendar.set(Calendar.MONTH, Calendar.AUGUST);
calendar.set(Calendar.DAY_OF_MONTH, 8);
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 8);
calendar.set(Calendar.SECOND, 8);
//将设置好的时间进行转化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(calendar.getTime());
System.out.println(format);
}
}
运行结果
我们也可以通过Calendar提供的方法获取当年,当月的天数
/**
* 获取给定时间分量所允许的最大值,参照日期为当前Calendar所表示的日期
*/
public class CalendarDemo {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println("今年一共:" + days + "天");
days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("当月一共:" + days + "天");
}
}
运行结果:
好了,接下来我们来进行Calendar的时间运算
/**
* 举个栗子:
* 再过3个月零5天就是我爷爷80岁大寿
* 请问,爷爷的出生日期?以及星期几?
*
*/
public class DemoCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
//先算出爷爷的大寿
calendar.add(Calendar.MONTH, 3);
calendar.add(Calendar.DAY_OF_YEAR, 5);
//开始计算爷爷的出生日期
calendar.add(Calendar.YEAR, -80);
//进行转化获取可观的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String format = sdf.format(calendar.getTime());
System.out.println("爷爷的出生日期是:"+format);
}
}
运行结果: