Java中对日期的处理(简明教程)

最主要掌握:

        知识点1:怎么获取系统当前时间

        知识点2:Date ---> String        调用 SimpleDateFormat 类的 format() 实例方法                SimpleDateFormat 构造时实参是转换后的字符串格式

        知识点3:String ---> Date         调用 SimpleDateFormat 类的 parse() 实例方法                SimpleDateFormat 构造时实参是转换前的字符串格式

import java.text.SimpleDateFormat;
import java.util.Date;
// 还有一个 java.sql.Date 类是负责sql的日期处理的。

public class DateTest01 {
    public static void main(String[] args) throws Exception {

        // 获取系统当前时间(精确到毫秒的系统当前时间)
        // 直接调用无参数构造方法就行。
        Date nowTime = new Date();
    
        // java.util.Date类的toString()方法已经被重写了。
        // 输出的不是一个对象的内存地址,而是一个日期字符串。
        //System.out.println(nowTime); //Thu Mar 05 10:51:06 CST 2020
    
        // 日期可以格式化吗?
        // 可以,日期可以转为指定格式的字符串。
        // 将日期类型Date,按照指定的格式进行转换:Date --转换成具有一定格式的日期字符串-->String
        // SimpleDateFormat是java.text包下的。专门负责日期格式化的。
        
        /*      yyyy 年(年是4位)
                MM 月(月是2位)
                dd 日
                HH 时
                mm 分
                ss 秒
                SSS 毫秒(毫秒3位,最高999。1000毫秒代表1秒)
                注意:在日期格式中,除了y M d H m s S这些字符不能随便写之外,剩下的符号格式自己随意组织。
                其余符号在帮助文档中可查询        */

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        //SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        //SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
    
        // 对SimpleDateFormat的实例对象调用format方法可以将日期转为该SimpleDateFormat对象指定格式的(表示时间的)字符串
        String nowTimeStr = sdf.format(nowTime);
        System.out.println(nowTimeStr);
    
        // 假设现在有一个日期字符串String,怎么转换成Date类型?
        // 使用 SimpleDateFormat 类的 parse() 实例方法
        // String --> Date
        String time = "2008-08-08 08:08:08 888";
        // SimpleDateFormat sdf2 = new SimpleDateFormat("格式不能随便写,要和日期字符串格式相同");
        // 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateTime = sdf2.parse(time);
        System.out.println(dateTime); //Fri Aug 08 08:08:08 CST 2008

    }
}

获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数(1秒 = 1000毫秒)

调用 System.currentTimeMillis(); 方法可返回一个 long 类型的毫秒数。

public class DateTest02 {
    public static void main(String[] args) {
        // 获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
        long nowTimeMillis = System.currentTimeMillis();
        System.out.println(nowTimeMillis); //1583377912981

        // 统计一个方法耗时
        // 在调用目标方法之前记录一个毫秒数
        long begin = System.currentTimeMillis();
        print();
        // 在执行完目标方法之后记录一个毫秒数
        long end = System.currentTimeMillis();
        System.out.println("耗费时长"+(end - begin)+"毫秒");
    }

    public static void print(){
        for(int i = 0; i < 100000; i++){
            System.out.println("i = " + i);
        }
    }
}

简单总结一下System类的相关属性和方法:    

System.out         【out是System类的静态变量。】    

System.out.println()         【println()方法不是System类的,是PrintStream类的方法。】    

System.gc()         建议启动垃圾回收器    

System.currentTimeMillis()         获取自1970年1月1日到系统当前时间的总毫秒数。    

System.exit(0)         退出JVM。

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

public class DateTest03 {
    public static void main(String[] args) {

        // 我们在创建Date的实例对象时,可以调用含实参的构造方法,参数表示从1970年1月1日 00:00:00 000(零时区)开始的总毫秒数
        Date time = new Date(1); // 注意:参数是一个毫秒

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String strTime = sdf.format(time);
        // 北京是东8区。差8个小时。
        System.out.println(strTime); // 1970-01-01 08:00:00 001

        // 获取昨天的此时的时间。
        Date time2 = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
        String strTime2 = sdf.format(time2);
        System.out.println(strTime2); //2020-03-04 11:44:14 829
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦矜

对你有帮助的话,请我吃颗糖吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值