Date类与Calendar类
Data类
Data类在java.util包中,它的无参构造方法创建的对象可以获取本地当前时间。用Data的构造方法Data(long time)创建的对象表示相对1970年1月1日0点(GMT)的时间。System类的静态方法currentTimeMillis()可获取系统当前时间,时间原点是从1970年1月1日0点到目前时刻走过的毫秒数。
package Data;
public class DemoData {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
exclude patterns:
1598776767347
格式化时间
Data对象表示时间的默认顺序是:星期、月、日、小时、分、秒、年、例如:
Stu Apr 30 18:00:45 CST 2020
我们可以使用DataFormat的子类SimpleDataFormat来实现日期的格式化。SimpleDataFormat有一个常用的构造方法:
public SimpleDataFormat(String pattern);
此构造方法可以调用参数pattern指定的格式创建一个对象sdf,然后调用“public String format(Data data)”方法格式化时间参数data指定的时间对象。format()方法将根据创建的sdf对象时所使用的参数pattern返回一个字符串对象formatTime:
String formatTime = sdf.format(new Data());
**注意:**参数pattern中应该含有“时间元字符”比如:yyyy-mm-dd,如果当前机器的时间是2020年8月30日,那sdf.format(new data)返回的字符串就是“2020-08-30”,此外如果pattern中的非时间元字符是ASCII字符集中的字符,必须用转义“ ‘ ”括起来,例如:pattern=" ‘time’:yyyy-MM-dd"。
输出指定格式的时间日期
import java.util.Date;
public class DemoData {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒");
// 调用DateFormat的实现类SimpleDateFormat中的format方法,
Date date = new Date();
String dateFormat = simpleDateFormat.format(date);
System.out.println(date);
System.out.println(dateFormat);
}
}
结果:
Sun Aug 30 17:12:38 CST 2020
2020 年 08 月 30 日 17 时 12 分 38 秒
Calendar类
Calendar类也在java.util包中,它的静态方法getInstance()可以初始化一个日历对象,例如:
Calendar calendar = Calendar getInstance();
Calendar对象可以调用set方法把日历翻到任何一个时间:
public final void set(int year,int month,int data)
public final void set(int year,int month,int data,int hour,int mintue)
public final void set(int year,int month,int data,int hour,int mintue,int second)
设置年月日时分秒
//2020-08-30 00:00:00
Calendar ca = Calendar.getInstance();
ca.set(Calendar.YEAR,2020);
ca.set(Calendar.MONTH,7);
ca.set(Calendar.DATE,29);
ca.set(Calendar.HOUR_OF_DAY,0);
ca.set(Calendar.MINUTE,0);
ca.set(Calendar.SECOND,0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(ca.getTime()));
2020-08-29 00:00:00
Calendar对象调用get(int field)方法可以获取有关年份的、月份、星期以及小时的信息,参数field的有效值由Calendar的静态常量指定,例如:
//获得年、月、日、时、分、秒、毫秒
calendar.get(Calendar.YEAR);
calendar.get(Calendar.MONTH);
calendar.get(Calendar.DATE);
calendar.get(Calendar.HOUR_OF_DAY);
calendar.get(Calendar.MINUTE);
calendar.get(Calendar.SECOND);
calendar.get(Calendar.MILLISECOND);
//当前时间是所在当前月的第几个星期(日历式的第几周)
calendar.get(Calendar.WEEK_OF_MONTH);
//当前时间是所在当前年的第几个星期(日历式的第几周)
calendar.get(Calendar.WEEK_OF_YEAR));
//当前时间是所在当前月的第几个星期,以月份天数为标准,一个月的1号为第一周,8号为第二周
calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
计算日期之间相隔的天数(常用)
实例:
public class setTime {
public static void main(String[] args) {
Calendar ca = Calendar.getInstance();
ca.setTime(new Date());
String year= String.valueOf(ca.get(Calendar.YEAR));
String month= String.valueOf(ca.get(Calendar.MONTH)+1);
String day= String.valueOf(ca.get(Calendar.DAY_OF_MONTH));
String week= String.valueOf(ca.get(Calendar.DAY_OF_WEEK)-1);
int hour = ca.get(Calendar.HOUR_OF_DAY);
int minute = ca.get(Calendar.MINUTE);
int second = ca.get(Calendar.SECOND);
System.out.println("现在的时间为:");
System.out.println(""+year+"年"+""+month+"月"+day+"日"+""+week+"星期");
System.out.println(""+hour+"时"+""+minute+"分"+""+second+""+"秒");
ca.set(2010,8,8);
long timeStart = ca.getTimeInMillis();
ca.set(2020,8,30);
long timeEnd = ca.getTimeInMillis();
long cha = (timeEnd-timeStart)/(1000*60*60*24);
System.out.println("两个年代相隔"+cha+"天");
}
结果:
现在的时间为:
2020年8月30日0星期
19时13分20秒
两个年代相隔3675天