1、Date类
(1)时间原点:
时间原点是1970年1月1日00:00:00
(2)构造方法:
Date类的构造方法一共有六个,其中四个已经过时:
空参的构造方法,获取当前操作系统的日期和时间:
有参数的构造方法,将对应的毫秒值转化为日期和时间:
将Date自元年开始表示的日期转化为毫秒值:
将毫秒值转化为日期:
打印Date对象时默认调用此方法:
(3)方法的运用:
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
Date date = new Date(0);// 毫秒值为0,即元年
System.out.println("date类元年为:" + date);
Date date1 = new Date(12345678912345L);// 毫秒值
System.out.println("date类元年后的12345678912345毫秒为:" + date1);
Date date2 = new Date();
System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
System.out.println("现在的时间为:" + date2.toString());
}
}
从运行结果来看date类的元年为:1970年1月1日08:00:00,不是1970年1月1日00:00:00,是因为中国是东八区,所以要加上8个小时。
2、DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatDemo {
public static void main(String[] args) throws ParseException {
Date date2 = new Date();
System.out.println("现在的时间为:" + date2.getTime() + "毫秒");
System.out.println("现在的时间为:" + date2.toString()); Date date = new Date(date2.getTime()); DateFormat df = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");// 对日期进行格式化 String str_time = df.format(date); System.out.println(str_time);// 把Date对象转换成String String str = "2019年7月9日"; DateFormat df1 = new SimpleDateFormat("yyyy年MM月dd日"); Date date1 = df1.parse(str);//parse: 从给定字符串的开始解析文本,以生成一个日期。 System.out.println(date1); } }
3、Calendar类
Calendar类:是日历类,有很多静态方法。
import java.util.Calendar;
import java.util.Date;
public class Calendardemo {
public static void main(String[] args) {
//Calendar类的方法getTime()
Calendar c1 = Calendar.getInstance();//不需要直接new 子类的对象,通过静态方法直接获取
Date date = c1.getTime();//把日历对象,转成Date日期对象
System.out.println(date);
Calendar c2 = Calendar.getInstance();
c2.add(Calendar.DAY_OF_MONTH, -300);// 让日历中的天数向后偏移300天
int year = c2.get(Calendar.YEAR);//年
int month = c2.get(Calendar.MONTH) + 1;//月,月份从零开始,所以月份要加1
int day = c2.get(Calendar.DAY_OF_MONTH);//日
System.out.println(year + "年" + month + "月" + day + "日"); Calendar c3 = Calendar.getInstance(); c3.set(2099, 4, 1); int year1 = c3.get(Calendar.YEAR);//年 int month1 = c3.get(Calendar.MONTH) + 1;//月 int day1 = c3.get(Calendar.DAY_OF_MONTH);//日 System.out.println(year1 + "年" + month1 + "月" + day1 + "日"); Calendar c4 = Calendar.getInstance(); int year2 = c4.get(Calendar.YEAR);//年 int month2 = c4.get(Calendar.MONTH) + 1;//月 int day2 = c4.get(Calendar.DAY_OF_MONTH);//日 System.out.println(year2 + "年" + month2 + "月" + day2 + "日"); Calendar c5= Calendar.getInstance(); System.out.println("年:" + c5.get(Calendar.YEAR)); System.out.println("月:" + (c5.get(Calendar.MONTH) + 1)); System.out.println("日:" + c5.get(Calendar.DAY_OF_MONTH)); System.out.println("时:" + c5.get(Calendar.HOUR_OF_DAY)); System.out.println("分:" + c5.get(Calendar.MINUTE)); System.out.println("秒:" + c5.get(Calendar.SECOND)); } }
最大的特点是可以分别获取:年月日时分秒