Java_Day18(Date类、SimpleDateFormat类、Calendar类、可变参数)
时间日期类
Date类(应用)
Date 代表了一个特定的时间,精确到毫秒
对于Date类 使用的是java.util包下的 Date表示特定的时间。
- 在JDK 1.1之前, Date有两个附加功能。 它允许将日期解释为年,月,日,小时,分钟和第二个值。 它还允许格式化和解析日期字符串。 不幸的是,这些功能的API不适合国际化。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。 在相应的方法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);
Calendar
public abstract class Calendar extends Object
implements Serializable, Cloneable, Comparable
所述Calendar类是一个抽象类,可以为在某一特定时刻和一组之间的转换的方法calendar fields如YEAR , MONTH , DAY_OF_MONTH , HOUR ,等等,以及用于操纵该日历字段,如获取的日期下个星期。 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00:00.000 GMT(Gregorian)的Epoch的偏移量。
- 常用方法:
// 获取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);
可变参数
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);
}
}
可变参数使用时的注意事项:
- 可变参数可单独作为方法的 形参
- 可变参数必须位于形参列表的最后位置
- 在一个方法的形参列表中 可变参数只能有一个
- 可变参数的类型可以是任意类型
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);
}
}