Date日期格式

一、分类:

(1)java.util.date :该包主要用于获取系统日期格式

(2)java.sql.date :该包主要用于定义数据库日期格式


二、构造方法摘要

Date() 分配 Date 对象并初始化此对象,并获取当前系统时间(精确到毫秒)。
Date(Long date) 分配 Date 对象并初始化此对象,传递的参数是毫秒数,以返回毫秒数所对应的时间。

(1)

将当前日期按一定的格式转换成字符串

将数字字符串转换成对应的日期格式

package daily;

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

public class date {
    public static void main(String[] args) throws ParseException {
        Date now = new Date();
        //Date已经重写toString方法,所以打印输出的不是这个对象,是当前时间
        System.out.println(now);
        //日期--->字符串
        SimpleDateFormat ds = new SimpleDateFormat("yyyy-MM-dd,HH时mm秒ss毫秒"); //获取日期格式化对象,并按照模式串中的方式进行时间格式解析
        String s1 = ds.format(now);//将格式化的时期对象通过format方法去解析当前时间,返回的是字符串
        System.out.println(s1);
        //字符串--->日期
        String f = "2020-03-10,12:18:30";//字符串的日期格式,必须要和SimpleDateFormat中的日期格式要一致,不然会出错
        SimpleDateFormat s2 = new SimpleDateFormat("yyyy-MM-dd,HH:mm:S");
        Date d = s2.parse(f);//将格式化的时期对象通过parse方法去解析当前字符串,返回的是日期格式
        System.out.println(d);

    }
}

输出:
Fri May 08 20:59:09 CST 2020
2020-05-08,20时59秒09毫秒
Tue Mar 10 12:18:00 CST 2020

(2)获取自1970年:01:01  00:00:00 到目前的毫秒数

public class date {
    public static void main(String[] args) {
       Long d = System.currentTimeMillis();
        System.out.println(d);
    }
}

运行结果:1588943655532

(3)统计一个方法运行时间

public class date {
    public static void main(String[] args) {
        Long s = System.currentTimeMillis();
        for (int i=0;i<30;i++)
        {
            System.out.println(i);
        }
        Long e = System.currentTimeMillis();
        System.out.println("该方法运行"+(e-s)+"ms");
    }
}

运行结果:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
该方法运行6ms

(4)通过有参构造方法:Date(Long date),操作时间,date参数表示传递的是毫秒,即获取传入毫秒所对应的自1970年00月00日00时00分00秒00ms以来,对应的时间

public class date {
    public static void main(String[] args) {
        Date d1 = new Date(1); //传递1,表示1970:00:00,00:00:00 1ms
        Date d2 = new Date(1588858826631L);//自1970以来,1588858826631毫秒数对应的年月日时分秒毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 SS");
        String s1 = sdf.format(d1);
        String s2 = sdf.format(d2);
        System.out.println(s1);
        System.out.println(s2);
        //获取昨天的当前时间
        Long yesterday = (System.currentTimeMillis()-1000*60*60*24);
        String s3 = sdf.format(yesterday);
        System.out.println(s3);
    }
}

运行结果:

1970年01月01日 08时00分00秒 01
2020年05月07日 21时40分26秒 631
2020年05月07日 21时51分02秒 366

  


3、拓展:数字(Decimal/Bigdecimal)格式化

(1)字符:

# 表示任意数字
表示千分位
表示小数点
0 表示小数位长度不够可以补0
public class datasfd {
    public static void main(String[] args) {
        DecimalFormat df = new DecimalFormat("###,###,###.000");//000表示保留三个小数位,不够补零
        String df1 = df.format(1004396868.3);
        System.out.println(df1);
    }
}

运行结果:
1,004,396,868.300

(2)Bigdecimal:属于大数据,精度极高,不属于基本数据类型,属于引用数据类型(java对象),一般用于财务软件的开发,是java.math包下的

public class datasfd {
    public static void main(String[] args) {
        BigDecimal b1 = new BigDecimal(300);
        BigDecimal b2 = new BigDecimal(200);
        //应用方法进行相加
        BigDecimal result = b1.add(b2);
        System.out.println(result);
    }
}

运行结果:
500

(3)产生随机数的random对象

import java.util.Random;

public class random {
    public static void main(String[] args) {
        Random random = new Random();
        int i1 = random.nextInt();//从int数据范围随机产生一个随机数
        int i2 = random.nextInt(101);//设置随机数边界,101表示随机数的范围在0——100
        System.out.println(i1);
        System.out.println(i2);
    }

}

运行结果:
-1830655855
5

编写一个程序,随机产生5个随机数,数字范围在[0,100]

package daily;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Random;

public class random {
    public static void main(String[] args) {
        Random random = new Random();
        int[] a = new int[5];//创建一个长度为5的数组
        for (int i=0;i<a.length;i++)//对数组进行初始化,不初始化数组默认存储0
        {
            a[i]=-1;
        }

        int b=0;
        while (b<a.length)//b控制元素插入位置
        {
            boolean flag=true;//标志位用来判断元素是否遍历完毕
int number = random.nextInt(101); for (int j =0;j<a.length;j++) { if (a[j] == number) { flag=false; break; } } if (flag) { a[b]=number; b++; } } System.out.println(Arrays.toString(a)); } }

运行结果:
[73, 68, 83, 3, 10]

}
原文地址:https://www.cnblogs.com/ibear/p/12856250.html