Android基础Java 基础

Java 常用类 08. Java 日期操作类

2021-12-18  本文已影响0人  yjtuuige

Java 中4种常用日期类:

  1. Date 类
  2. Calendar 类
  3. DateFormat 类
  4. SimpleDateFormat 类
  1. Date 类

Date 类所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式:

构造方法:

常用方法:

方法 描述
public long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public void setTime(long date) 设置时间,以毫秒为单位
boolean after(Date when) 测试此日期是否在指定日期之后。
boolean before(Date when) 测试日期是否在指定日期之前。
int compareTo(Date anotherDate) 比较两个日期的顺序。如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。
package com.base.demo05;

import java.util.Date;

public class Demo01 {
    public static void main(String[] args) {
        // 1.创建 Date 对象
        Date date1 = new Date();
        // 打印当前时间
        System.out.println("当前时间:"+date1);
        System.out.println(date1.toString());
        System.out.println(date1.toLocaleString()); // 已弃用
        // 返回时间毫秒数 自1970开始
        System.out.println("毫秒数:"+date1.getTime());
        // 创建date1副本
        Object clone = date1.clone();
        System.out.println(clone);
        // 2.创建昨天的时间对象
        Date date2 = new Date(date1.getTime() - (60 * 60 * 24 * 1000));
        System.out.println("昨天时间:"+date2.toLocaleString());
        // 3.方法 before() 之前
        boolean b1 = date1.before(date2);
        System.out.println(b1);
        // after()  之后
        boolean after = date1.after(date2); // false
        System.out.println(after);  // true
        // compareTo() 比较时间 大于返回1,小于返回-1,等于返回0
        int i = date1.compareTo(date2);
        System.out.println(i);  // 1
        // equals() 判断两个时间是否相等
        System.out.println(date1.equals(date2));    // false
        System.out.println(date1.equals(clone));    // true
    }
}
  1. Calendar 类
方法 描述
static Calendar getInstance() 使用默认时区和区域获取日历
void set(int year,int month, int date, int hourOfDay,int minute,int second) 设置年、月、日、时、分、秒。
public int get(int field) 返回指定字段的值。字段如年、月、日等
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
Date getTime() 返回一个表示此 Calendar 时间值的 Date 对象。
void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间
long getTimeMillies() 以毫秒为单位返回该日历的时间值。
getActualMaximum() 获取时间最大值
getActualMinimum() 获取时间最小值
常量 描述
Calendar.YEAR 取得年
Calendar.MONTH 取得月
Calendar.DAY_OF_MONTH 取得日
Calendar.HOUR_OF_DAY 取得小时,24小时制
Calendar.HOUR 取得小时,12小时制
Calendar.MINUTE 取得分
Calendar.SECOND 取得秒
Calendar.MILLISECOND 取得毫秒
Calendar.DAY_OF_WEEK 取得星期几
package com.base.demo05;

import java.util.Calendar;

public class Demo02 {
    public static void main(String[] args) {
        // 1.创建 Calendar 对象
        Calendar date1 = Calendar.getInstance();
        System.out.println(date1.getTime().toLocaleString());
        // 毫秒值
        System.out.println(date1.getTimeInMillis());
        // 2.获取时间信息
        // 年
        int year = date1.get(Calendar.YEAR);
        // 月 (获取的月值,需要+1)
        int month = date1.get(Calendar.MONTH);
        // 日 或 DAY_OF_MONTH
        int day = date1.get(Calendar.DATE);
        // 小时: HOUR_OF_DAY 24小时; HOUR 12小时
        int hour = date1.get(Calendar.HOUR_OF_DAY);
        // 分钟
        int minute = date1.get(Calendar.MINUTE);
        // 秒
        int second = date1.get(Calendar.SECOND);
        // month 月值需要+1
        System.out.println(year + "年" + (month + 1) + "月"
                + day + "日 " + hour + ":" + minute + ":" + second);
        // 3.修改时间
        Calendar date2 = Calendar.getInstance();
        // 修改 DATE 日
        date2.set(Calendar.DATE, 15);
        System.out.println(date2.getTime().toLocaleString());
        // 增减时间 add() 正数为增加,负数为减少 -1
        date2.add(Calendar.YEAR,-2);
        System.out.println(date2.getTime().toLocaleString());
        
        // 4.补充方法 getActualMaximum() 获取时间最大、最小值
        // 获取 当月的最大,最小值
        int max = date2.getActualMaximum(Calendar.DATE);
        int min = date2.getActualMinimum(Calendar.DATE);
        System.out.println(max);
        System.out.println(min);
    }
}
  1. DateFormat 类
DateFormat df = DateFormat.getDatelnstance();
方法 描述
String format(Date date) 将 Date 格式化日期/时间字符串
Calendar getCalendar() 获取与此日期/时间格式相关联的日历
static DateFormat getDateInstance() 获取具有默认格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style) 获取具有指定格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style, Locale locale) 获取具有指定格式化风格和指定语言环境的日期格式
static DateFormat getDateTimeInstance() 获取具有默认格式化风格和默认语言环境的日期/时间 格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) 获取具有指定日期/时间格式化风格和默认语言环境的 日期/时间格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale) 获取具有指定日期/时间格式化风格和指定语言环境的 日期/时间格式
static DateFormat getTimeInstance() 获取具有默认格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style) 获取具有指定格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style, Locale locale) 获取具有指定格式化风格和指定语言环境的时间格式
void setCalendar(Calendar newCalendar) 为此格式设置日历
Date parse(String source) 将给定的字符串解析成日期/时间

实例:

package com.base.demo05;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class Demo04 {
    public static void main(String[] args) {
        DateFormat df1 = DateFormat.getDateInstance();
        DateFormat df2 = DateFormat.getDateTimeInstance();
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,
                new Locale("zh", "CN"));
        DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,
                DateFormat.ERA_FIELD,new Locale("zh",
                "CN"));
        System.out.println(df1.format(new Date()));
        System.out.println(df2.format(new Date()));
        System.out.println(df3.format(new Date()));
        System.out.println(df4.format(new Date()));
    }
}

运行结果:

  1. SimpleDateFormat 类
字母 日期或时间 示例
y 2021
M 年中月份 08
d 月中天数 10
D 年份中的天数中天数 295
H 一天中小时(0-23) 22
h 一天中小时(1~12) 11
m 分钟 16
s 59
S 毫秒 356
E 星期几 星期四
方法 描述
public Date parse(String source)throws ParseException 将一个包含日期的字符串变为 Date 类型
public final String format(Date date) 将一个 Date 类型按照指定格式变为String 类型
package com.base.demo05;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo03 {
    public static void main(String[] args) {
        // 1.创建 SimpleDateFormat 对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 2.创建时间
        Date date1 = new Date();
        // 3.格式化 format(date1) 把日期转换成字符串
        String str = sdf.format(date1);
        System.out.println(str);
        // 把字符串转换成日期  parse() 字符串要和创建对象的格式一致 此处会有异常,需要处理
        try {
            Date date2 = sdf.parse("2022-12-12 12:12:12");
            System.out.println(date2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

总结

上一篇下一篇

猜你喜欢

热点阅读