Javaクラス(日付、DateFormatの、カレンダー、タイムゾーン)日付関連およびその他のツール(スキャナ、システム)

Dateクラス

所属的包:

私たちは通常、Dateクラスが属する使用されるjava.utilパッケージには、我々はリードパッケージをインポートする必要があります。

継承:

デフォルトに加えて、しかし、他の相続せず、java.lang.Objectクラスを継承します。

使用します。

ここに画像を挿入説明
示されているように、このクラスは、デザインJava1.0バージョンの初めの時点で考慮にタイムゾーンの問題になりませんので、その施工方法のほとんどが廃棄されています。だからではなく、それ以降のバージョンでは、新しいクラスJava1.1カレンダーがあります。
私たちは、引数なしのコンストラクタと、コンストラクタが引数なしのデフォルトでオブジェクトのコンストラクタを作成するために、long型のパラメータを持つパラメータ(ミリ秒)を持って使用することができ、時間の創造の現在の目標期限です。

Date date = new Date();
//上一行代码等价于:
Date date1 = new Date(System.currentTimeMillis());
System.out.println(date.equals(date1));//true
Date date2 = new Date(1582518754409L);

Dateクラスは、グリニッジ時刻形式を印刷し、toStirng()メソッドをオーバーライドします。

System.out.println(date);//Mon Feb 24 12:28:42 CST 2020

一般的な方法:

メソッドのほとんどは放棄されています。しかし、あなたが使用することはできませんという意味ではありません放棄し、それらを使用することができますが、それを強くお勧めしません。

これらは時代遅れの方法ではありません。

  • 前()
  • 後の()
  • setTime()
  • 時間をもらう
  • compareTo()
Date date1 = new Date(1582518754409L);//5分钟之前的时间
Date date2 = new Date();//默认就是用当前的系统时间构建的date对象
boolean x = date1.before(date2);//date1是否在date2之前
System.out.println(x);//true
boolean y = date1.after(date2);//date1是否在date2之后
System.out.println(y);//false
date1.setTime(1582518754409L);
System.out.println(date1.getTime());//1582518754409
System.out.println(date1.compareTo(date2));//-1  调用对象的时间在参数对象的时间之前
System.out.println(date2.compareTo(date1));//1   调用对象的时间在参数对象的时间之后

どのように私たちが望むタイプの日付を変換します:

効果アウトDateクラスの印刷があるので、Mon Feb 24 12:28:42 CST 2020グリニッジ標準時の形式で、我々は、このような日付の種類として、私たちが望むものをプリントアウト:2018-12-09 09:34:12それは?
私たちは、日付書式DateFormatクラスの助けを必要としています。
表情で。

DateFormatクラス

所属的包:

java.text包,改包专门用作格式化,需要import导包使用。

继承关系:

直接继承自java.text.Format类。
ここに画像を挿入説明

使用方式:

DateFormat类是一个抽象类,不能创建对象 ,我们只能拿它的子类来使用。
它的一个子类:SimpleDateFormat

子类SimpleDateFormat的继承关系

ここに画像を挿入説明

子类SimpleDateFormat的使用方式

通过创建SimpleDateFormat类的对象来使用。

 Date date1 = new Date();
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 String v = sdf.format(date1);//通过sdf对象将date1格式化成你描述的样子
 System.out.println(v);//2020-02-24 13:18:02

ここに画像を挿入説明
需要的字符串参数:
常用的:

  • y:代表年份,写四个y,表示4个占位,如:2018(年)
  • M:月份,写两个M,表示2个占位,如:09(月)
  • d:日期 day in month(天)
  • H:小时,24小时制,如:13:00
  • h:小时,12小时制,如:01:00
  • m:分钟,minute in hour
  • s:秒,seconod in minute

Calendar类

所属的包:

java.util包,需要import导入。
Calendar类里包装了Date属性,Date类里包装了time(毫秒值)。

继承关系:

除默认继承java.lang.Object类外,无其它任何继承关系。
ここに画像を挿入説明

使用方式:

Calendar类有构造方法,但是用protected修饰,通常访问不到 。我们通常会调用默认的getInstance()方法来获取它的实例对象去使用。

Calendar calendar = Calendar.getInstance();
System.out.println(calendar);//java.util.GregorianCalendar[name1=value1,name2=value2,·····]

常用方法:

  • after()
  • before()
  • setTime()
  • getTime()
  • getTimeInMillis()
  • getTimeZone()
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());//Mon Feb 24 13:50:36 CST 2020
System.out.println(calendar.getTimeInMillis());//1582523436712
System.out.println(calendar.getTimeZone());//sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]

Calendar里面包含一个date属性,我们可以去操作date的某一个局部信息:

  • set()
  • get()
 calendar.set(Calendar.YEAR,2015);
 int year = calendar.get(Calendar.YEAR);
 int month = calendar.get(Calendar.MONTH);//从0开始计数
 int day = calendar.get(Calendar.DAY_OF_MONTH);
 System.out.println(year+"--"+month+"--"+day);//2015--1--24
 System.out.println(year+"--"+(month+1)+"--"+day);//2015--2--24

TimeZone类

所属的包:

java.util包,需要import导入。

继承关系:

除默认继承java.lang.Object类外,无其它任何继承关系。
ここに画像を挿入説明

使用方式:

可以通过calendar对象.getTimeZone()获取 或 TimeZone.getDefault();获取,二者等价。

TimeZone tz = TimeZone.getDefault();
TimeZone tz1 = Calendar.getInstance().getTimeZone();
System.out.println(tz.equals(tz1));//true

常用方法:

  • getID()
  • getDisplayName()
 TimeZone tz = TimeZone.getDefault();
 String id = tz.getID();// Asia/Shanghai
 String name = tz.getDisplayName();//中国标准时间
 System.out.println(id+"----"+name);// Asia/Shanghai----中国标准时间

另附其他常用工具类(Scanner,System)

Scanner类

所属的包:

java.util包,需要import导入。

继承关系:

除默认继承java.lang.Object类外,无其它任何继承关系。

使用方式:

通过一个带输入流的构造方法创建对象。

常用方法:

  • nextInt()
  • nextFloat()
  • next()
  • nextLine()

它们之间的区别在于:nextInt(),nextFloat(),next()它们读取的方式都是以回车符作为结尾,但它们不读回车符,仍然把回车符放在消息队列里。
而nextLine()会读取回车符,然后又扔掉了回车符。
像下面的代码:

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入密码:");
        int psw = input.nextInt();

        System.out.println("请输入用户名:");
        String name = input.nextLine();

        System.out.println("用户名:"+name+"密码:"+psw);
    }

ここに画像を挿入説明
刚输入完密码123,还没输入用户名,程序就已终止。
原因在于,nextInt()方法不读回车符,它把123读取并拿走之后,消息队列还剩下一个回车符没有读取,到了nextLine()方法,它会读取回车符,它直接把回车符读取了,而回车符作为终止符,它读到回车后认为用户输入完毕了。然后又将回车符扔掉,相当于啥也没读到。
解决的方法:

  1. 在nextInt()方法后面加一个无变量接收的nextLine()方法,将消息队列中多余的回车符都去掉。(即便消息队列中有两个回车符也会一并读取)
  2. 把nextLine()方法替换为next()方法。但是要注意的是next()方法不能读取空格。

System类

所属的包:

java.lang包,不需要导入。

继承关系:

除默认继承java.lang.Object类外,无其它任何继承关系。

使用方式:

不需要创建对象,通过类名就可以访问。

三个属性:

  • out
  • int
  • err

ここに画像を挿入説明

常用方法:

  • gc():运行垃圾回收器。
  • 終了():現在実行中のJava仮想マシンを終了するには、パラメータ(INTステータス)を渡します。
  • currentTimeMillis():ミリ秒単位でシステム時刻を返し、現在の年の間の差コンピュータ(1970年1月1日夜12時08分00秒)。
公開された46元の記事 ウォン称賛15 ビュー2597

おすすめ

転載: blog.csdn.net/qq_43598138/article/details/104475170