package 常用类.Date;

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

/**月份从0-11的整数表示,0是一月,11是12月
 * 日期对象--》毫秒值  getTime方法:
 * 原因:可以通过毫秒值来进行日期运算
 * 毫秒值--》日期对象 setTime方法或者构造方法new Date(毫秒值);
 * 原因:可以对年月日等字段的操作
 * Date实现了comparable接口
 * 格式化:简单说把物体进行重新划分,改变物体内部空间结构
 * abstract DateFormat :日期格式类
 * 工厂:生产对象的地方*/
public class dateDemo {

    public static void main(String[] args) throws ParseException {
        //demo_1();
        demo_2();
        demo_3();
        test_1();

    }
    public static void test_1() throws ParseException {
        String str_day_1="2016-5-1";
        String str_day_2="2017-4-23";
        DateFormat dateFormat = DateFormat.getDateInstance();
        Date date1=dateFormat.parse(str_day_1);
        Date date2=dateFormat.parse(str_day_2);
        Long l1=date1.getTime();
        Long l2=date2.getTime();
        //日期相减一定要确保结果是正数
        System.out.println(Math.abs((l1-l2))/1000/60/60/24+"天");
    }
    /**将日期格式的字符串---》日期对象
     * @throws ParseException */
    public static void demo_3() throws ParseException {
        String str_day="2017-4-23";
        String str_day_1="2017---5-1";
        DateFormat dateFormat = DateFormat.getDateInstance();
        DateFormat d1 = new SimpleDateFormat("yyyy---MM-dd");
        Date date1=dateFormat.parse(str_day);
        System.out.println(date1);
        Date date2=d1.parse(str_day_1);
        System.out.println(date2);
        
    }
    /**将日期对象---》日期格式字符串 ;对日期对象进行格式化   使用DateFormate类中的format方法*/
    public static void demo_2() {
        Date date =  new Date();
        //获取日期格式对象的方法,具备着默认风格。
        //DateFormat dateFormat = DateFormat.getDateInstance();
        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
        dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
        String str_day = dateFormat.format(date);
        System.out.println(str_day);
        //自定义风格日期 是由SimpleDateFormat类完成的
        dateFormat= new SimpleDateFormat("yyyy--MM--dd");
        String str_day_1=dateFormat.format(date);
        System.out.println(str_day_1);
    }

    private static void demo_1() {
        Long time = System.currentTimeMillis();
        System.out.println(time);
        Date date1 = new Date();
        System.out.println(date1);
        Date date2 = new Date(1492942746472L);//long型
        System.out.println(date2);
    }

}
package 常用类.Calendar;

import java.util.Calendar;
import java.util.Date;


/**
 * abstract Calendar日历 类中提供返回对象的方法 getInstance();
 */
public class CalendarDemo {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        // 设置时间
        //c.set(Calendar.YEAR, 2019);
        //c.set(2017, 3, 23);
        // 时间偏移
        //c.add(Calendar.DAY_OF_MONTH, 9);
        //c.add(Calendar.YEAR, -5);
        //打印当前时间
        demo_1(c);
        //计算每年2月有多少天
        int year=2017;
        int day=demo_2(c,year);
        System.out.println(year+"年二月有"+day+"天");
        //获取昨天的这个时间
        //demo_3(c);
//        Date date = c.getTime();
//        System.out.println(date);

    }

    public static void demo_3(Calendar c) {
        //c.get(Calendar.DAY_OF_MONTH);
        c.add(Calendar.DAY_OF_MONTH, -1);
        demo_1(c);
    }

    private static int demo_2(Calendar c,int year) {
        
        c.set(year, 2, 1, 0, 0, 0);
        c.add(Calendar.DAY_OF_MONTH,-1);
        int day =c.get(Calendar.DAY_OF_MONTH);
        return day;
        
    }

    public static void demo_1(Calendar c) {
        
        // 获取当前时间
        int year = c.get(Calendar.YEAR);
        int day = c.get(Calendar.DAY_OF_MONTH);
        int month = c.get(Calendar.MONTH) + 1;// 月份从0开始计数所以要加1
        int week = c.get(Calendar.DAY_OF_WEEK);
        int hour=c.get(Calendar.HOUR_OF_DAY);
        System.out.println(year + "年" + month + "月" + day + "日"+hour+"点"+ getWeek(week));
    }
/**输出日期一定要注意1代表周日 7代表周六 为了观看方便可以通过下面这个方法实现字符串输出对应星期*/
    private static String getWeek(int week) {
        String[] arr = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

        return arr[week];
    }

}