Java基础知识之日期类

一.DATE类
Date类中的大量方法都已经过时了,过时不代表不存在,依然可以使用,只不过不建议使用,官方建议我们使用Calendar类.
date类的简单使用

public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);//Mon Mar 30 18:13:26 CST 2020
        // 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
        System.out.println(date.getTime());//1585563307686
        //过时方法,但是可以使用
        System.out.println(date.toLocaleString());//2020-3-30 18:14:13
    }
}

二.DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
常用方法:
①format(Date date) 将一个 Date 格式化为日期/时间字符串。
②getInstance() 获取为日期和时间使用 SHORT 风格的默认日期/时间格式器。
③parse() 从给定字符串的开始解析文本,以生成一个日期。

public class DateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        DateFormat df = DateFormat.getInstance();
        String format = df.format(date);
        System.out.println(format);//20-3-30 下午6:22默认的是短风格的日期格式
        Date date1 = df.parse(format);
        System.out.println(date1);//Mon Mar 30 18:29:00 CST 2020
        df = DateFormat.getDateInstance(DateFormat.LONG);
        String format1 = df.format(date);
        System.out.println(format1);//2020年3月30日.选择风格
        df = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
        String format2 = df.format(date);
        System.out.println(format2);//2020年3月30日 下午06时26分07秒
    }
}

三.SimpleDateFormat类
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern 方法来修改格式模式。
在这里插入图片描述
常用方法:
①applyPattern(String pattern) 将给定模式字符串应用于此日期格式。

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        String pattern="yyyy-MM-dd";//指定风格
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern(pattern);//将给定模式字符串应用于此日期格式
        String format = sdf.format(date);
        System.out.println(format);//2020-03-30
        Date date1 = sdf.parse(format);
        System.out.println(date1);//Mon Mar 30 00:00:00 CST 2020
    }
}

四.Calendar类
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
        Date time = calendar.getTime();
        System.out.println(time);//Mon Mar 30 18:43:52 CST 2020
        //获取HOUR属性的值
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println(hour);//18
    }
}

五.小操作(需求:查询最近一周。。。的信息)
注意:月份需要+1

public class CalendarDemo {
    public static void main(String[] args) {
        // 需求:查询最近一周。。。的信息,如何表示最近这一周
        Date current = new Date();
        Date endTime = null;
        Calendar c = Calendar.getInstance();
        int month=c.get(Calendar.MONTH)+1;
        c.setTime(current);
        //把日增加一天,时分秒设置为0
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, 0);
        c.set(Calendar.HOUR_OF_DAY,0);
        c.set(Calendar.MINUTE,0);
        c.set(Calendar.SECOND,0);
        endTime = c.getTime();
        c.add(Calendar.DAY_OF_MONTH, -7);
        Date beginTime = c.getTime();
        System.out.println("开始时间:"+beginTime.toLocaleString());//开始时间:2020-3-24 0:00:00
        System.out.println("结束时间:"+endTime.toLocaleString());//结束时间:2020-3-31 0:00:00
    }
}

六.Date工具类

public class DateUtils {

    private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);

    /***
     * Date类型转换成XMLGregorianCalendar类型
     *
     * @param date
     * @return
     */
    public static XMLGregorianCalendar convertToXMLGregorianCalendar(Date date) {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(date);
        XMLGregorianCalendar gc = null;
        try {
            gc = DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
        } catch (Exception e) {
            logger.error("Date类型转换成XMLGregorianCalendar类型出错:" + e);
        }
        return gc;
    }

    /***
     * XMLGregorianCalendar类型转换成Date类型
     *
     * @param cal
     * @return
     * @throws Exception
     */
    public static Date convertToDate(XMLGregorianCalendar cal) throws Exception {
        GregorianCalendar ca = cal.toGregorianCalendar();
        return ca.getTime();
    }

    /**
     * String 转 Date
     *
     * @param str    日期字符串
     * @param format 转换格式
     * @return Date
     */
    public static Date stringToDate(String str, String format) {
        DateFormat dateFormat = new SimpleDateFormat(format);
        Date date = null;
        try {
            date = dateFormat.parse(str);
        } catch (ParseException e) {
            logger.error("String类型 转 Date类型出错:" + e);
        }
        return date;
    }

    /**
     * Date 转 String
     * auther: shijing
     * 2015年3月25日上午11:28:14
     *
     * @param date   日期
     * @param format 转换格式
     * @return
     */
    public static String dateToString(Date date, String format) {
        DateFormat dateFormat = new SimpleDateFormat(format);
        String strDate = null;
        try {
            if (date != null) {
                strDate = dateFormat.format(date);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            logger.error("Date类型 转 String类型出错:" + e);
        }
        return strDate;
    }


    /***
     * 测试方法
     *
     * @param args
     */
    public static void main(String[] args) {
        XMLGregorianCalendar d = DateUtils
                .convertToXMLGregorianCalendar(new Date());
//		System.out.println(d.getDay());
        XMLGregorianCalendar cal = null;
        try {
            cal = DatatypeFactory.newInstance().newXMLGregorianCalendar();
            cal.setMonth(06);
            cal.setYear(2010);
            Date date = DateUtils.convertToDate(cal);
            String format = "yyyy-MM-dd HH:mm:ss";
            SimpleDateFormat formatter = new SimpleDateFormat(format);
//			System.out.println(formatter.format(date));

            Date d1 = DateUtils.stringToDate("2014/7/24 9:51:00", "yyyy/MM/dd hh:mm:ss");
            XMLGregorianCalendar d2 = DateUtils.convertToXMLGregorianCalendar(d1);
//			System.out.println(d2.toString());

            String dateStr = DateUtils.dateToString(cal.toGregorianCalendar().getTime(), "yyyy-MM-dd HH:mm:ss");
//			System.out.println("dateStr="+ dateStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
发布了99 篇原创文章 · 获赞 2 · 访问量 2622

猜你喜欢

转载自blog.csdn.net/weixin_41588751/article/details/105130223