Date basics of Java class

A class .DATE
number of methods Date class are outdated, obsolete does not mean there is not still available, but not recommended, the official suggested that we use the Calendar class.
Simple to use date class

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
    }
}

Two .DateFormat class
DateFormat date / time formatting subclasses of the abstract class, which formats and parses dates or time in a language-independent manner. Date / time formatting subclasses (such as the SimpleDateFormat) allowed format (i.e. date -> text), parsing (text -> date) and standardization. The date is represented as a Date object, or as a number of milliseconds GMT (Greenwich Mean Time) January 1, 1970 00:00:00 starting from this moment.
Common methods:
①format (DATE Date) Date a formatted date / time string.
②getInstance () Gets use SHORT style for the date and time of the default date / time formatter.
③parse () from a given start parsing the text string to generate a date.

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秒
    }
}

Three .SimpleDateFormat class
SimpleDateFormat is a concrete class locale-related manner of formatting and parsing dates. It allows for formatting (date -> text), parsing (text -> date) and normalization.
SimpleDateFormat enables the selection of any user-defined date - time format mode. However, it is recommended to create a DateFormat date by the getTimeInstance, getDateInstance or getDateTimeInstance - time formatter. Each of these methods can return a class / time formatter date format default mode initialization. Format pattern may be modified according to need applyPattern method.
Here Insert Picture Description
Common methods:
①applyPattern (String pattern) given pattern string to this date format.

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 four categories
Calendar class is an abstract class that provides a specific instant conversion between a group such as a calendar field YEAR, MONTH, DAY_OF_MONTH, HOUR some other method, and the calendar for the operating field (for example, obtained date next week ) provides a number of methods. Instantly available millisecond value to indicate that it is from the epoch (ie GMT 00 January 1, 1970 are: 00: 00.000, Gregorian calendar) offset.

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
    }
}

Five small operation (demand: inquiry last week ... information)
Note: The month need +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
    }
}

Six .Date Tools

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();
        }
    }
}
Published 99 original articles · won praise 2 · Views 2622

Guess you like

Origin blog.csdn.net/weixin_41588751/article/details/105130223