JAVA 常用类之Date类(一)

1、两个构造器的使用

第一个构造函数使用当前日期和时间来初始化对象。

第二个构造函数接收一个参数,该参数是从 1970 年 1 月 1 日起的毫秒数。

2、两个方法的使用

long getTime( )
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
tring toString( )

把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

3、java.sql.Date 对应数据库中的日期类型的变量

实例化

java.sql.Date date3 = new java.sql.Date(1642858104424L);//2022-01-22

4、动手写代码

package com.test;

import org.junit.Test;

import java.util.Date;

public class TestDate {
    @Test
    public void test(){
      Date date1=  new Date();
        //输出当期时间
        System.out.println("当前时间为:"+date1.toString());
        //1970 年 1 月 1 日起的毫秒数
        System.out.println("1970 年 1 月 1 日起的毫秒数为:"+date1.getTime());
        Date date2=  new Date(date1.getTime());
        System.out.println("另一个构造器的:"+date2);

        //创建java.sql.Date 对象的日期2022-01-22
        java.sql.Date date3 = new java.sql.Date(1642858104424L);
        System.out.println(date3);

    }
}

运行结果

当前时间为:Sat Jan 22 21:34:23 CST 2022
197011 日起的毫秒数为:1642858463669
另一个构造器的:Sat Jan 22 21:34:23 CST 2022
2022-01-22

5、java.text.SimpleDateformat

  • Date 类的API 不易被国际化,大部分被废弃
  • java.text.SimpleDateformat是一个不与语言环境有关的方式来格式化和解析日期的具体类
  • 格式化解析
  • 逆格式化
  • 不用默认构造器

代码查验学习

package com.test;

import org.junit.Test;

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

public class TestDebug {
    @Test
    //格式化学习
    public void test(){
        String str1 = null;
        StringBuffer sb = new StringBuffer();
        //用方法不抛异常
        sb.append(str1);

        System.out.println("加入str1 = null 后可变数组长度"+sb.length());//是4不是0
        //
        System.out.println("传进去的是null");
        System.out.println("输出数组:"+sb);//"null"
        //报错,抛异常
        //原因:
        StringBuffer sb1 = new StringBuffer(str1);
        System.out.println(sb1);
    }
    @Test
    //逆格式化学习
    public void test2() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat();
        Date date1 = new Date();
        System.out.println("没格式化哦:"+ date1);
        System.out.println("********************");
        String sdf1= sdf.format(date1);
        System.out.println("格式化后:"+sdf1);

        //格式化逆过程
        String str2 = "2022-1-23 上午 14:10";
        Date date2 = sdf.parse(str2);
        System.out.println(date2);
    }
    //不使用默认的构造器(开发不一定需要那种格式)
    @Test
    public void test3 () throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat();
        String str2 = "2022-1-23 上午 14:10";
        //默认逆式化(解析)
        Date date1 = sdf.parse(str2);
        System.out.println("默认格式"+date1);

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
        //带参构造器格式化(根据需要)
        String format = sdf1.format(date1);
        System.out.println("带参格式化结果哦:"+format);

    }
}

运行结果
空指针异常为重难点,需多次分析理解吸收

加入str1 = null 后可变数组长度4
传进去的是null
输出数组:null

java.lang.NullPointerException
	at java.lang.StringBuffer.<init>(StringBuffer.java:139)
	at com.test.TestDebug.test(TestDebug.java:24)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)

没格式化哦:Sun Jan 23 16:38:31 CST 2022
********************
格式化后:22-1-23 下午4:38
Sun Jan 23 14:10:00 CST 2022
默认格式Sun Jan 23 14:10:00 CST 2022
带参格式化结果哦:2022-01-23 02-10-00

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值