Date

java中对日期的处理
    这个案例最主要掌握:
        知识点1:怎么获取系统当前时间
        知识点2:String --> Date
        知识点3:Date --> String:
package com.javaSe.date;


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


/*
java中对日期的处理
    这个案例最主要掌握:
        知识点1:怎么获取系统当前时间
        知识点2:String --> Date
        知识点3:Date --> String
*/
public class DateTest01 {
    public static void main(String[] args) throws Exception{
        // 获取系统当前时间
        // 直接调用无参数构造方法就行。
        Date nowTime = new Date();
        
        // java.util.Date类的toString()方法已经被重写了。
        // 输出的应该不是一个对象的内存地址,应该是一个日期字符串。
        // System.out.println(nowTime); // Thu Jul 02 20:59:00 CST 2020
        
        // 日期可以格式化吗?
        // 将日期类型Date,按照指定的格式进行转换:Date -- 转换成具有一定格式的日期字符串 --> String
        // SimpleDateFormat是java.text包下的。专门负责日期格式化的。
        /*
        yyyy 年(年是4位)
        MM 月(月是2位)
        dd 日(日是2位)
        HH 时
        mm 分
        ss 秒
        sss 毫秒(毫秒是3位,最高999,1000毫秒代表1秒)
        注意:在日期格式中,除了 y M d H m s S 这些字符不能随便写之外,剩下的符号格式自己随意组织。
         */
        
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String date = sf.format(nowTime);
        System.out.println(date);
        
        // 假设现在有一个日期字符串String,怎么转换成Date类型?
        String time = "2020-07-02 21:19:50 265";
        // SimpleDateFormat sdf = new SimpleDateFormat("格式不能随便写,要和字符串格式相同");
        // 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateTime = sdf.parse(time);
        System.out.println(dateTime);// Thu Jul 02 21:19:50 CST 2020
        
    }
}

获取1970年1月1日到现在时间的毫秒数:

package com.javaSe.date;
/*
获取自1970年1月1日 00:00:00 000 到当前系统时间的总毫秒数
1秒 = 1000毫秒


简单总结一下System类的相关属性和方法:
    System.out [out是System类的静态变量]
    System.out.println() [println()方法不是System类的,是PrintStream类中的方法]
    System.gc() 建议启动java垃圾回收器
    System.currentTimeMillis() 获取自1970年1月1日到系统当前时间毫秒数
    System.exit(0) 退出JVM
*/
public class DateTest02 {
    public static void main(String[] args) {
        long nowTimeMillis = System.currentTimeMillis();
        System.out.println(nowTimeMillis);//1593696591719
        
        // 统计一个方法耗时
        // 在调用目标方法之前记录一个毫秒数
        long begin = System.currentTimeMillis();
        print();
        // 执行完成目标方法之后记录一个毫秒数
        long end = System.currentTimeMillis();
        System.out.println("耗费"+ (end - begin) +"毫秒");
    }
    
    // 需求:统计一个方法执行所耗费时长
    public static void print(){
        for (int i = 0; i < 1000000000; i++) {
            //System.out.println("i =" + i);
        }
    }
}
 
如何获取昨天的时间:
package com.javaSe.date;


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


public class DateTest03 {
    public static void main(String[] args) {
        // 这个时间是什么时间?
        // 1970-01-01 00:00:00 001
        Date date = new Date(1);// 注意:参数是一个毫秒
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String time = sdf.format(date);
        // 北京市东8区。差8个小时  我们与格林威治的时间有时差  早8个小时
        System.out.println(time); // 1970-01-01 08:00:00 001
        
        // 获取昨天的此时的时间
        Date date1 = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
        String time1 = sdf.format(date1);
        System.out.println(time1); // 2020-07-01 22:06:19 208
    }
}
如何获取前一个月、1天、1年的时间:
package com.javaSe.date;




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




public class DateTest04 {
    public static void main(String[] args) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar c = Calendar.getInstance();
    
        //过去一年
        c.setTime(new Date());
        c.add(Calendar.YEAR, -1);
        Date y = c.getTime();
        String year = format.format(y);
        System.out.println("过去一年:"+year);
    
    
        //过去一月
        c.setTime(new Date());
        c.add(Calendar.MONTH, -1);
        Date m = c.getTime();
        String mon = format.format(m);
        System.out.println("过去一个月:"+mon);
    
    
        //过去一天
        c.setTime(new Date());
        c.add(Calendar.DATE, - 1);
        Date d = c.getTime();
        String day = format.format(d);
        System.out.println("过去一天:"+day);
    }
}

如何根据一个人的出生年月计算他的岁数:

package com.javaSe.date;


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


public class DateTest05 {
    public static void main(String[] args) throws Exception{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        
        // simpleDateFormat.parse("1996-01-22")  解析字符串 生成Date类型时间
        Date date = simpleDateFormat.parse("1996-01-22");
        c.setTime(date);
        // 将Date转换成毫秒
        System.out.println(c.getTimeInMillis());
        
        // 用当前毫秒数 - 解析的毫秒数 = 这个人的岁数年
        long age = System.currentTimeMillis() - c.getTimeInMillis();
        
        // 利用公式计算出这个人当前年龄为:
        System.out.println(age / 365 / 24 / 60 / 60 / 1000);
    }
}
原文地址:https://www.cnblogs.com/xlwu/p/13227782.html