Date日期类常用方法

package demo.api;

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

class DateTest {
    public static void main(String[] args) throws ParseException {
        dateDemo();//Date方法演示
//        formatDemo();//日期格式化方法
//        calendarDemo();//Calendar方法
        //datePractice();//日期练习:实现获得两个日期相减得到的天数
//        stringForwardDate();//String转为日期,读出还是String
    }

    //String转为日期,读出还是String
    private static void stringForwardDate() throws ParseException {
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd : HH:mm:ss");//此格式对应MySQL的datetime类型
        //注意: 指定的字符串格式必须要与SimpleDateFormat的模式要一致。
        String birthday = "2000-12-26 : 11:29:08";
        Date date = sdf2.parse(birthday);//将字符串转为指定date日期对象
        System.out.println("指定格式的当前时间:" + sdf2.format(date));//将日期对象转换为指定格式的字符串
    }

    //Date方法演示
    private static void dateDemo() {
        Date date = new Date(); //获取当前的系统时间转化为日期对象
        Date date2 = new Date(966666666666l); //获取自1970以来XXX毫秒后时间。
        System.out.println("当前时间:" + date + "\n1970后来时间:" + date2);
        System.out.println("日期对象转毫秒:" + date2.getTime());
        System.out.println("date2是否在date日期之后:" + date.after(date2));
        System.out.println("date2是否在date日期之前:" + date.before(date2));
        System.out.println("比较两个日期是否相等:" + date.equals(date2));
        System.out.println("比较日期顺序:" + date.compareTo(date2));//大于返回1,小于返回-1,等于返回0

        //DateUtils.isSameDay(date,date2);//判断两个日期是否为同日
    }

    //日期格式化方法 DateFormat SimpleDateFormat
    private static void formatDemo() throws ParseException {
        Date date = new Date(); //获取当前的系统时间转化为日期对象
        //日期格式化类    DateFormat
        DateFormat dateFormat = DateFormat.getDateInstance();//获取日期格式器  默认格式化风格
        System.out.println("日期\n默认格式:" + dateFormat.format(date));//2018年5月26日

        dateFormat = DateFormat.getDateInstance(DateFormat.LONG);//获取日期格式器  给定格式化风格
        System.out.println("指定格式:" + dateFormat.format(date));//2018年5月26日
        ;
        dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
        System.out.println("指定格式2:" + dateFormat.format(date));//2018年5月26日星期六

        dateFormat = DateFormat.getDateInstance(DateFormat.DATE_FIELD);
        System.out.println("指定格式3:" + dateFormat.format(date));//2018/5/26

        dateFormat = DateFormat.getDateTimeInstance();
        System.out.println("\n日期时间\n默认格式:" + dateFormat.format(date));//2018年5月26日 下午2:53:09

        dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
        System.out.println("默认格式2:" + dateFormat.format(date));//2018年5月26日 CST 下午2:53:09

        //日期格式化类 SimpleDateFormat extends dateFormat
        SimpleDateFormat sdf = new SimpleDateFormat();
        System.out.println("\n默认格式的当前时间:" + sdf.format(date));//2018/5/26 下午2:53

        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        System.out.println("指定格式的当前时间:" + sdf2.format(date));//日期转换指定格式的字符串
//      2018年05月26日 14:53:09

        //注意: 指定的字符串格式必须要与SimpleDateFormat的模式要一致。
        String birthday = "2000年12月26日 11:29:08";
        date = sdf2.parse(birthday);
        System.out.println("字符转换成对应的日期:" + date);//字符转换成对应的日期
//        Tue Dec 26 11:29:08 CST 2000
/**
 * 输入其他字符,都会原样输出
 *yyyy:年
 * MM:月
 * dd:日
 * hh:1~12小时制(1-12)
 * HH:24小时制(0-23)
 * mm:分
 * ss:秒
 * S:毫秒
 * E:星期几
 * D:一年中的第几天
 * F:一月中的第几个星期(会把这个月总共过的天数除以7)
 * w:一年中的第几个星期
 * W:一月中的第几星期(会根据实际情况来算)
 * a:上下午标识
 * k:和HH差不多,表示一天24小时制(1-24)。
 * K:和hh差不多,表示一天12小时制(0-11)。
 * z:表示时区
 * */
    }

    //Calendar方法演示
    private static void calendarDemo() {
        Calendar cal = Calendar.getInstance();//当前时间实例
        System.out.println("年" + cal.get(Calendar.YEAR));//return int
        System.out.println("月" + (cal.get(Calendar.MONTH) + 1));//国外计算月份是从0开始,所以+1  等同DAY_OF_MONTH
        System.out.println("日" + cal.get(Calendar.DATE));
        System.out.println("周" + (cal.get(Calendar.DAY_OF_WEEK) - 1));//国外计算周是从日开始
        System.out.println("时" + cal.get(Calendar.HOUR_OF_DAY));//  HOUR 是12进制
        System.out.println("分" + cal.get((Calendar.MINUTE)));
        System.out.println("秒" + cal.get(Calendar.SECOND));

        //计算指定天数后的时间
        cal.set(2008, 7, 8);//设置时间  7其实是8月
        System.out.println("工程开始时间:" + cal.getTime());//getTime()返回Date对象
        cal.add(Calendar.DATE, 100);//工程实施100天(年,月,小时...)
        System.out.println("工程结束时间:" + cal.getTime());
    }

    //日期练习:实现获得两个日期相减得到的天数
    private static void datePractice() {
        String str_data1 = "2012-3-17";
        String str_data2 = "2012-4-6";
        System.out.println(getDataSubtract(str_data1, str_data2));
    }

    //日期练习:获得两个日期相减的天数
    private static int getDataSubtract(String str_data1, String str_data2) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date data1 = null;
        Date data2 = null;
        try {
            data1 = sdf.parse(str_data1);
            data2 = sdf.parse(str_data2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Date date = new Date(Math.abs(data1.getTime() - data2.getTime()));
        return (int) (date.getTime() / 1000 / 60 / 60 / 24);
    }
}
/**
 * toString
 * public String toString()把此 Date 对象转换为以下形式的 String:
 * dow mon dd hh:mm:ss zzz yyyy其中:
 * <p>
 * dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
 * mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
 * dd 是一月中的某一天(01 至 31),显示为两位十进制数。
 * hh 是一天中的小时(00 至 23),显示为两位十进制数。
 * mm 是小时中的分钟(00 至 59),显示为两位十进制数。
 * ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
 * zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
 * yyyy 是年份,显示为 4 位十进制数。
 * <p>
 * DAY_OF_WEEK
 * get 和 set 的字段数字,指示一个星期中的某天。
 * <p>
 * DAY_OF_WEEK
 * get 和 set 的字段数字,指示一个星期中的某天。
 * <p>
 * DAY_OF_WEEK
 * get 和 set 的字段数字,指示一个星期中的某天。
 */
/**
 * DAY_OF_WEEK
 *           get 和 set 的字段数字,指示一个星期中的某天。
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值