操作日期时间:Date类(util)、DateFormat类、Calender类

Date类

概述:

  1. 时间日期类。
  2. 用来获得时间和日期信息。

构造方法:

Date()

  • 获得当前系统时间日期对象。
  • 若要输出,可以直接sout(对象名)

Date(long date)

  • 根据指定的毫秒值创建日期对象。

成员方法:

long getTime()

  • 获得当前时间的毫秒值。

毫秒值概述:

1秒 == 1000毫秒

时间零点:

1970.1.1 00:00:00

示例代码:

public class DateDemo01 {
    public static void main(String[] args){
        // 创建日期对象
        Date d = new Date();
        // Sun Jul 29 09:58:10 CST 2018 ==> China Standard Time
        // 2018‐07‐29 09:58:10
        // 2018/07/29 09:58:10
        System.out.println(d);
        // 获得当前时间的毫秒值:1532829685562
        System.out.println(d.getTime());
        // 根据毫秒值创建日期对象
        Date d2 = new Date(1000L);
        // Thu Jan 01 08:00:01 CST 1970
        System.out.println(d2);
    }
}

DateFormat类

DateFormat类概述:

是一个日期格式化类,抽象类,不能直接创建该类的对象,只能创建子类对象。

DateFormat类常用子类:

SimpleDateFormat

DateFormat类常见操作:

  • 将日期对象转换为字符串:Date ==> String
  • 将日期字符串转换为日期对象: String ==> Date

SimpleDateFormat类的构造方法:

SimpleDateFormat()

  • 创建日期格式化对象,使用默认的日期模式。

​​​​​​​SimpleDateFormat(String pattern)

  • 指定日期模式创建日期格式化对象。

SimpleDateFormat类的常用方法:

String format(Date date)

  • 将日期对象格式化为字符串: Date ==> String

​​​​​​​void applyPattern(String pattern)

  • 修改日期模式

​​​​​​​Date parse(String str)

  • 将字符串转换为日期对象: String ==> Date

日期模式:

yyyy

 
MM  
dd  
HH HH:24小时制   hh:12小时制
mm  
ss  

注意事项与总结:

  • 年:yyyy,可以为3位,若3位自动补成4位。可以为一位与二位,若为一位,则自动补成二位。
  • 只有MM和HH是大写的,其他都是小写。

日期转换字符串的步骤:

  1. ​​​​​​​创建日期对象。
  2. 创建日期格式化对象并指定日期模式。
  3. 调用日期格式化对象的format方法将日期转换为字符串。

示例代码:

public class DateFormatDemo01 {
    public static void main(String[] args){
        // 创建日期对象
        Date d = new Date();
        // 创建日期格式化对象:使用默认的日期模式
        // 2018‐07‐29 09:58:10
        SimpleDateFormat sdf = new SimpleDateFormat();
        // 修改日期模式
        sdf.applyPattern("yyyy/MM/dd HH:mm:ss");
        // 创建日期格式化对象:指定日期模式
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        // 将日期对象格式化为字符串
        String dStr = sdf.format(d);
        // 2018/7/29 上午10:16
        // 2018‐07‐29 09:58:10
        // 2018/07/29 09:58:10
        System.out.println(dStr);
    }
}

字符串转换日期对象的步骤:

  1. 创建日期格式化对象并指定日期模式。
  2. 调用日期格式化对象的parse方法将字符串转换为日期对象。

示例代码:

public class DateFormatDemo02 {
    public static void main(String[] args) throws ParseException {
        // 日期字符串
        String str = "2018‐07‐29 10:26:23";
        // 创建日期格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd HH:mm:ss");
        // 将字符串转换为日期对象
        Date d = sdf.parse(str);
        System.out.println(d);
    }
}

Calendar类

Calendar类概述:

  1. 是一个日历类,通过日历类可以获得日期和时间信息。
  2. 是一个抽象类,不能直接创建该类的对象,只能使用子类。(猜想是单例模式的类)

如何获得日历类对象:

通过调用Calendar类的静态方法获得日历对象,该方法声明如下:

  • static Calendar getInstance() 

Calendar类常用方法:

int get(int field)

  • 根据日历字段获得对应的值。 常见的日历字段:年月日时分秒。
  • 也可以用给的常量值,参数写 Calendar.XXX
  • 取出的月份的数字,需要加上1.,才是实际的月份。

​​​​​​​void set(int field,int value)

  • 修改指定日历字段的值为value。(当成翻日历)
  • 也可以用给的常量值,参数写 Calendar.XXX
  • 如果超出范围,会自动进位。
  • 存的月份比实际的月份少一,例如:若想把系统调成7月份,则value值为6。

​​​​​​​void add(int field,int value)

  • 将指定日历字段的值在当前基础上偏移一个值value。
  • value:正数,向后偏移。
  • value:负数,向前偏移。

​​​​​​​long getTimeInMillis()

  • 获得当前时间的毫秒值

​​​​​​​Date getTime()

  • 获得日期对象

​​​​​​​void set(int year,int month,int date)

  • 修改年月日

对月份的小结:

  • 计算机取值 0-----11,对应着实际赋值的1-------12。
  • 如输入0月份,电脑get出来的月份数字也是0,但是电脑实际上是1月份。
  • 如输入12月份,则进一年,电脑get出来的月份数字也是0,但是电脑实际上是1月份。

Date和Calendar如何选择:

  1. Date 是不支持国际化的。
  2. Calendar 是支持国际化的。
  3. 如果项目需要支持国际化,则选择Calendar,否则随便选择。

综合应用Date类和Calender类:

需求:计算出一个人已经出生了多少天。

/**
    计算出生到现在活了多少天:使用Date和SimpleDateFormat实现
 */
public class CalendarDemo01 {
 public static void main(String[] args) throws ParseException {
        // 出生日期
        String brithDayStr = "2018‐07‐28";
        // 创建日期格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy‐MM‐dd");
        // 将字符串转换日期对象
        Date birthDayDate = sdf.parse(brithDayStr);
        // 获得出生时间的毫秒值
        long birthDayTime = birthDayDate.getTime();
        // 获得当前时间日期对象
        Date todayDate = new Date();
        // 获得当前时间的毫秒值
        long todayTime = todayDate.getTime();
        // 两个毫秒值相减
        long distance = todayTime ‐ birthDayTime;
        System.out.println(distance/1000/3600/24);
    }
}
/**
    计算出生到现在活了多少天:使用Calenar类实现
 */
public class CalendarDemo02 {
    public static void main(String[] args) throws ParseException {
        // 获得日历对象
        Calendar c = Calendar.getInstance();
        // 获得当前时间的毫秒值
        long todayTime = c.getTimeInMillis();
        // 修饰年月日为出生日期
        c.set(2018, 6, 28);
        // 获得出生时的毫秒值
        long birthDayTime = c.getTimeInMillis();
        // 两个毫秒值相减
        long distance = todayTime ‐ birthDayTime;
        System.out.println(distance/1000/3600/24);
    }
}

​​​​

猜你喜欢

转载自blog.csdn.net/weixin_41630924/article/details/81660175