1、Date类:java.util.Date

Date的每一个实例用于示意一个工夫点,外部保护一个long值,该值记录的是自1970年1月1日00:00:00到以后Date示意的工夫之间所通过的毫秒。

留神:如果计算1970年1月1日00:00:00之前的工夫戳,那么该值为负值,可通过负值失常计算即可。

因为Date存在时区以及千年虫问题,所以大部分操作工夫的办法都被申明为过期的不再倡议应用了。

package date;import java.util.Date;public class DateDemo {    public static void main(String[] args) {        //默认创立示意以后零碎工夫        Date date = new Date();        System.out.println(date);    //Thu Aug 20 10:27:16 CST 2020        //获取Date外部保护的long值        long time = date.getTime();        System.out.println(time);     //1597890475765                time = time+1000*60*60*24;    //加一天        date.setTime(time);        System.out.println(date);     //Fri Aug 21 10:29:20 CST 2020                date.setTime(0);        //默认是1970年1月1日00:00:00,因为东八区的起因所以减少8小时)        System.out.println(date);     //Thu Jan 01 08:00:00 CST 1970            }}

2、SimpleDateFormat:java.text.SimpleDateFormat

该类能够将Date与String之间互转。依附的是一个日期格局字符串。

package date;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateDemo2 {    public static void main(String[] args) throws ParseException {        Date now = new Date();        System.out.println(now);    //Thu Aug 20 13:39:44 CST 2020                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                /*         * String format(Date date)         * 将给定的Date依照SDF指定的日期格局转换为一个字符串         */        String line = sdf.format(now);        System.out.println(line);    //2020-08-20 13:39:44                /*         * 将一个字符创解析为一个Date         */        String str = "2008-08-08 08:08:08";        Date date = sdf.parse(str);        System.out.println(date);    }}

3、Calendar日历类:java.util.Calendar

Calendar是用来操作工夫的API,应用十分的不便。但自身是一个抽象类,提供一个用于获取实现类的静态方法:getInstance(),该办法能够依据以后零碎所在地区获取一个实用的实现类大部分地区获取回来的都是:GregorianCalendar(阳历)

package date;import java.util.Calendar;import java.util.Date;public class CalendarDemo {    public static void main(String[] args) {        //Calendar默认也示意以后零碎工夫        Calendar calendar = Calendar.getInstance();        /*         * Calendar的toString输入的信息很多         * 然而不能直观的看出具体日期         */        System.out.println(calendar);        /*         * Date getTime()         * Calendar提供的getTime办法能够获取一个Date,         * 该实例示意的就是以后Calendar过示意的日期         */        Date date = calendar.getTime();        System.out.println(date);        /*         * Calendar另一个办法:         * void setTime(Date date)         * 该办法能够让以后Calendar示意给定的Date         * 所示意的日期         */        calendar.setTime(date);        System.out.println(calendar);    }}

外汇经纪商比照https://www.fx61.com/brokerlist

Calendar提供了获取各工夫重量信息的办法:int get(int field)

参数为一个int值,不同的值示意不同的工夫重量,而咱们无需记忆这些数字,Calendar把这些数定义为了常量。

package date;import java.util.Calendar;public class CalendarDemo2 {    public static void main(String[] args) {        Calendar calendar = Calendar.getInstance();        //获取年        int year = calendar.get(Calendar.YEAR);        //获取月(月从0开始)        int month = calendar.get(Calendar.MONTH)+1;        /*         * 获取日         * DAY_OF_MONTH 月中的天         * DATE         月中的天         * DAY_OF_WEEK  周中的天          * DAY_OF_YEAR  年中的天         */        int date = calendar.get(Calendar.DATE);                System.out.println(year+"-"+month+"-"+date);                int h = calendar.get(Calendar.HOUR_OF_DAY);        int m = calendar.get(Calendar.MINUTE);        int s = calendar.get(Calendar.SECOND);        System.out.println(h+":"+m+":"+s);                //查看明天是往年的第几天?        int days = calendar.get(Calendar.DAY_OF_YEAR);        System.out.println(days);                //明天是周几?        int dow = calendar.get(Calendar.DAY_OF_WEEK);        String[] data = {"日","一","二","三","四","五","六"};        System.out.println("周"+data[dow-1]);                /*         * 获取指定的工夫重量所容许的最大值         */        days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);        System.out.println(days);        }}

void set(int field,int value)

对指定的工夫重量设置指定的值。

package date;import java.util.Calendar;/** * void set(int field,int value) * 对指定的工夫重量设置指定的值 * @author ta * */public class CalendarDemo3 {    public static void main(String[] args) {        Calendar calendar = Calendar.getInstance();        /*         * 示意2008-08-08 20:08:08         */        calendar.set(Calendar.YEAR, 2008);        calendar.set(Calendar.MONTH, Calendar.AUGUST);        calendar.set(Calendar.DATE,3);        calendar.set(Calendar.HOUR_OF_DAY, 20);        calendar.set(Calendar.MINUTE, 8);        calendar.set(Calendar.SECOND, 8);        //上面的getTime输入如果正文掉,前面的输入后果不同        System.out.println(calendar.getTime());        /*         * 下面设置日期为8号,然而set办法并非在每次         * 设置后就真的将工夫重量该对对应值,而是在         * getTime时进行理论计算,然而上面的代码在         * 设置星期几时会影响月中的天,这会导致方才         * 设置的8号被笼罩等于没做。         * 对此的解决办法是,当设置呈现相互影响时,         * 能够在之前设置过后被动调用一次getTime办法         * 让Calendar进行一次调整运算后再设置就没有         * 问题了         */        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);        System.out.println(calendar.getTime());    }}

void add(int field,int amount)

对指定的工夫重量累加给定值。若给定值为复数则是减去。

该操作与set不同,调用一次后就会实在进行一次计算操作。

package date;import java.util.Calendar;/** * void add(int field,int amount) * 对指定的工夫重量累加给定值。若给定的值为 * 正数则是减去。 * 该操作与set不同,调用一次后就会实在进行一次 * 计算操作。 * @author ta * */public class CalendarDemo4 {    public static void main(String[] args) {        Calendar calendar = Calendar.getInstance();        /*         * 3年5个月零25天当前是哪天?         */        //加3年        calendar.add(Calendar.YEAR, 3);        //加5个月        calendar.add(Calendar.MONTH, 5);        //加25天        calendar.add(Calendar.DAY_OF_YEAR, 25);        System.out.println(calendar.getTime());        /*         * 查看当周的周六是哪天?         */        calendar.set(            Calendar.DAY_OF_WEEK, Calendar.SATURDAY);        System.out.println(calendar.getTime());    }}