Date类常用方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public Date() | 构造 | 实例化Date类对象 |
2 | public Date(long date) | 构造 | 将数字变为Date类对象,long为日期时间数据 |
3 | public long getTime() | 普通 | 将当前的日期时间变为long型 |
例:取得当前的日期时间
package Project.Study.DateClass;
import java.util.Date;
public class Test1 {
public static void main(String[]args){
Date date=new Date(); //实例化Date对象
System.out.println(date); //输出对象信息
}
}
//结果:
//Wed Apr 01 20:09:49 CST 2020
大家可能都注意到了,上程序输出的日期未格式化处理,看着十分变扭,日期的格式化需要用到SimpleDateFormat类,这个类我们等下会讲到。
例:Date与long间的转换
package Project.Study.DateClass;
import java.util.Date;
public class Test2 {
public static void main(String[]args){
long cur=System.currentTimeMillis(); //取得当前日期时间以long型返回
Date date=new Date(cur); //将long型转化为Date
System.out.println(date); //输出对象信息
System.out.println(date.getTime());
}
}
//结果:
//Wed Apr 01 20:16:22 CST 2020
//1585743382666
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public SimpleDateFormat(String pattern) | 构造 | 传入日期时间标记实例化对象 |
2 | public final String format(Date date) | 普通 | 将日期格式化为字符串数据 |
3 | public Date parse(String source) throws ParseException | 普通 | 将字符串格式化为日期数据 |
例:将日期格式化显示(Date型数据变为String型数据)
package Project.Study.SimpleDateFormatClass;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test1 {
public static void main(String[]args){
Date date=new Date(); //实例化Date类对象
//实例化SimpleDateFormat类对象,同时定义好要转换的目标字符串格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String str=sdf.format(date); //将Date型变为String型
System.out.println(str);
}
}
//结果:
//2020-04-01 23:57:56.166
注:yyyy-MM-dd HH:mm:ss.SSS分别对应(年-月-日 时:分:秒.毫秒),这些都是常用的时间标记。
例:将字符串转换为日期
package Project.Study.SimpleDateFormatClass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test2 {
public static void main(String[]args) throws ParseException {
String str="2020-04-01 23:57:56.166"; //日期字符串
//实例化SimpleDateFormat类对象,同时定义好了要转换的字符串格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date=sdf.parse(str); //将字符串变为日期型数据
System.out.println(date);
}
}
//结果:
//Wed Apr 01 23:57:56 CST 2020
SimpleDateFormat类其实有一个好处就是,它可以自动处理错误的日期时间数,例如:如果设置的月数是15,则自动增加一年,变为3个月。
例:观察SimpleDateFormat的自动纠正
package Project.Study.SimpleDateFormatClass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test3 {
public static void main(String[]args) throws ParseException {
String str="2020-15-65 23:57:56.166"; //定义一个错误的日期字符串
//实例化SimpleDateFormat类对象,同时定义好了要转换的字符串格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date=sdf.parse(str); //将字符串变为日期型数据
System.out.println(date);
}
}
//结果:
//Tue May 04 23:57:56 CST 2021
从上程序可以看到,虽然我们定义了一个错误的日期字符串,但SimpleDateFormat类自动进行了进位处理。
Calendar类中定义的常量和方法
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public static final int YEAR | 常量 | 取得年、int类型 |
2 | public static final int MONTH | 常量 | 取得月、int类型 |
3 | public static final int DAY_OF_MONTH | 常量 | 取得日、int类型 |
4 | public static final int HOUR_OF_DAY | 常量 | 取得小时(24小时制)、int类型 |
5 | public static final int MINUTE | 常量 | 取得分、int类型 |
6 | public static final int SECOND | 常量 | 取得秒、int类型 |
7 | public static final int MILLISECOND | 常量 | 取得毫秒、int类型 |
8 | public static Calendar getInstance() | 普通 | 根据默认的时区实例化对象 |
9 | public boolean after(Object when) | 普通 | 判断一个日期是否在指定日期之后 |
10 | public boolean before(Object when) | 普通 | 判断一个日期是否在指定日期之前 |
11 | public int get(int field) | 普通 | 返回给定日历字段的值 |
例:取得当前的日期时间
package Project.Study.CalendarClass;
import java.util.Calendar;
public class Test1 {
public static void main(String[]args){
Calendar cal=Calendar.getInstance(); //取得本类对象
StringBuffer buf=new StringBuffer(); //保存日期数据
buf.append(cal.get(Calendar.YEAR)).append("-"); //取得年数据
buf.append(cal.get(Calendar.MONTH)+1).append("-"); //取得月数据,从0开始
buf.append(cal.get(Calendar.DAY_OF_MONTH)).append(" "); //取得天数据
buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":"); //取得小时数据
buf.append(cal.get(Calendar.MINUTE)).append(":"); //取得分钟数据
buf.append(cal.get(Calendar.SECOND)); //取得秒数据
System.out.println(buf);
}
}
//结果:
//2020-4-2 1:11:34
由上程序我们可以发现,Calendar类取得的内容不会前导0,即如果当前月份是4月,那么返回的不是“04”,而是“4”。
注意:由于Calendar类的月是从0开始的,所以每一次在进行月份计算的时候都需要执行一个“+1”操作。
Calendar类还可以进行简单的日期计算
例:取得五天后的日期
package Project.Study.CalendarClass;
import java.util.Calendar;
public class Test2 {
public static void main(String[]args){
Calendar cal=Calendar.getInstance();
StringBuffer buf=new StringBuffer();
buf.append(cal.get(Calendar.YEAR)).append("-");
buf.append(cal.get(Calendar.MONTH)+1).append("-");
buf.append(cal.get(Calendar.DAY_OF_MONTH)+5).append(" ");
buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
buf.append(cal.get(Calendar.MINUTE)).append(":");
buf.append(cal.get(Calendar.SECOND));
System.out.println(buf);
}
}
//结果:
//2020-4-7 1:21:56
注意:Calendar类并没有SimpleDateFormat类的自动进位功能。
例:错误示范
package Project.Study.CalendarClass;
import java.util.Calendar;
public class Test2 {
public static void main(String[]args){
Calendar cal=Calendar.getInstance();
StringBuffer buf=new StringBuffer();
buf.append(cal.get(Calendar.YEAR)).append("-");
buf.append(cal.get(Calendar.MONTH)+1).append("-");
buf.append(cal.get(Calendar.DAY_OF_MONTH)+33).append(" ");
buf.append(cal.get(Calendar.HOUR_OF_DAY)).append(":");
buf.append(cal.get(Calendar.MINUTE)).append(":");
buf.append(cal.get(Calendar.SECOND));
System.out.println(buf);
}
}
//结果:
//2020-4-35 1:30:11(一个月不会有35天的...)