date
代表了一个特定的时间,精确到毫秒
对于Date类 使用的是java.util包下的 Date表示特定的时间。
时间日期类 Date的标准基准时间是 1970年1月1日00:00:00 GMT起的指定毫秒数。
构造方法
基本方法
public class DateDemo {
public static void main(String[] args) {
// 创建Date对象 返回系统当前时间
Date date = new Date();
System.out.println(date);
//第二种构造方式 public Date(long date)
long time = date.getTime();//返回当前时间距离1970年1月1日0:0:0的毫秒数
Date date1 = new Date(time);
date1.setTime(time + 100000);//重写修改时间
System.out.println(date1.toString());
// 比较两个时间对象是否相等 public int compareTo(Date anotherDate)
//如果参数Date等于此Date,则值为0 ; 如果此日期在Date参数之前,该值小于0 ; 如果此日期在Date参数0则值大于0 。
System.out.println(date.compareTo(date1));
}
}
时间日期的格式化
public class SimpleDateFormat extends DateFormat
SimpleDateFormat是一个具体的类 它允许格式化(日期文本),解析(文本日期)时间日期格式化的模式的表示
构造方法
常用方法
时间日期的格式化 格式化之后返回的是一个String类型
// 进行时间日期的格式化
//创建一个SimpleDateFormat对象 方式一
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(date);
System.out.println(strDate);
//方式二
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String strDate1 = sdf1.format(date);
System.out.println(strDate1);
将String类型的 日期解析为Date类型
//解析
String dateStr = "2020-12-22 20:05:12";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd ");
Date date2 = sdf2.parse(dateStr);
System.out.println(date2);
//解析
String dateStr = "2020-12-22";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");
Date date2 = sdf2.parse(dateStr);
System.out.println(date2);
封装一个时间日期格式化的工具类
public class DateFormatUtil {
// 将Date类型转换为String 进行格式化
public static String date2Str(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
//将String类型转换为Date 解析
public static Date str2Date(String strDate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(strDate);
return date;
}
}
Calendar
没有构造方法,使用 getInstance(); 方法获取一个calendar对象
常用方法
// 获取Calendar的对象 返回系统当前的日历对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
// 获取年月日时分秒
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
int month =calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);
int sec = calendar.get(Calendar.SECOND);
String str = year +"年"+ month + "月" + day +"日" +" " + hour+":"+min+":"+sec;
System.out.println(str);
修改时间
// 获取 当前日期的后10天的时间
//calendar.add(Calendar.DAY_OF_MONTH,10);
// 获取 当前日期的前10天的时间
calendar.add(Calendar.DAY_OF_MONTH,-10);
/*
案例:二月天
需求:获取任意一年的二月有多少天
思路:设置时间为当年的3月1号 再来获取3月1号的前一天
*/
public class CalendarDemo2 {
public static void main(String[] args) {
int day = get2MonthLastDay(2052);
System.out.println(day);
}
public static int get2MonthLastDay(int year){
Calendar calendar = Calendar.getInstance();
//此时设置当前时间为某年的3月1号
calendar.set(year,2,1);
// 2月的最后一天就是3月1好的 前一天
calendar.add(Calendar.DAY_OF_MONTH,-1);
// 获取年月日时分秒
int day = calendar.get(Calendar.DAY_OF_MONTH);
return day;
}
}
可变参数
public class VarDemo {
//计算两个整数的和
//计算三个整数的和 对于上述两个要求 可以用方法重载解决
//但是 可能出现对于求和的参数 的个数不确定的情况 可以使用可变参数来解决
//可变参数的使用和 数组相同
public static int sum(int a,int ... b){
for(int i = 0 ; i < b.length;i++){
a+= b[i];
}
return a;
}
public static void main(String[] args) {
int s= sum(1,2,3,4,5,3);
System.out.println(s);
}
}
注意事项
1. 可变参数可单独作为方法的形参;
2. 可变参数必须位于形参列表的最后位置;
3. 在一个方法的形参列表中 可变参数只能有一个;
4. 可变参数的类型可以是任意类型
public static int sum(int c,int d ,int ... b){
int a = 0 ;
for(int i = 0 ; i < b.length;i++){
a+= b[i];
}
return a;
}
public class VarDemo {
//计算两个整数的和
//计算三个整数的和 对于上述两个要求 可以用方法重载解决
//但是 可能出现对于求和的参数 的个数不确定的情况 可以使用可变参数来解决
//可变参数的使用和 数组相同
public static int sum(int c,int d ,Object ... b){
Integer a = 0 ;
for(int i = 0 ; i < b.length;i++){
Integer bb = (Integer) b[i];
a+= bb;
}
return a;
}
public static void main(String[] args) {
int s= sum(1,2,3,4,5,3);
System.out.println(s);
}
}