日期,时间,数学类的最全,最完美的精讲

import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.Format;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;

public class RunaMain {
public static void main(String[] args) throws ParseException {
System.out.println(" /Date的用法*******/");

    //创建日期对象,返回当前日期
    Date date = new Date();
    System.out.println(date);
    
    //返回日期date距离1970-1-1 00:00:00经过的毫秒数
    System.out.println(date.getTime());
    
    //把日期转化为当前的格式
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    
    //输出结果为:2018年10月20日 18:24:12
    System.out.println(simpleDateFormat.format(date));
    
    // System.out.println(new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date()));
    
    //反过来,把日期格式的字符串转化为日期
    String text = "2018年10月20日 18:50:03";
    //特别注意日期格式中间空格要和下面代码中空格一一对应
    SimpleDateFormat S2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    Date date1 = S2.parse(text);
    System.out.println(date1);
    
    //返回日期date距离1970-1-1 00:00:00经过的毫秒数
    long millis = System.currentTimeMillis();
    System.out.println(millis);
    
    //把毫秒数转化为日期对象
    Date date2 = new Date(millis);
    System.out.println(date2);


    System.out.println("/***************************Calendar的用法********************/");
    //calendar是抽象类可以通过静态getInstance()方法创建对象
    Calendar calendar = Calendar.getInstance();
    //get()返回某个字段的值
    System.out.print(calendar.get(Calendar.YEAR) + "-");
    //月份从0开始
    System.out.print(calendar.get(Calendar.MONTH) + "-");
    System.out.print(calendar.get(Calendar.DAY_OF_MONTH) + "  ");
    System.out.print(calendar.get(Calendar.HOUR_OF_DAY) + ":");
    System.out.print(calendar.get(Calendar.MINUTE) + ":");
    System.out.println(calendar.get(Calendar.SECOND));
    //设置字段的值
    calendar.set(Calendar.DAY_OF_MONTH, 22);
    System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
    calendar.set(Calendar.DAY_OF_MONTH, 44);
    //当月份设置超过字段的上限值,那么会影响上个字段的值,比如9月变成现在10月了,天数也不是44而是月份上线达到溢出13
    System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
    System.out.println(calendar.get(Calendar.MONTH));
    System.out.println(calendar.getTime());
    System.out.println(calendar.getTimeInMillis());

    //线程安全的日期类:在java.time包中
    System.out.println("*******************线程安全的日期类:在java.time包中(从jdk8开始才有的)*****************");
    //日期
    LocalDate date3 = LocalDate.now();
    System.out.println(date);
    //时间
    LocalTime time = LocalTime.now();
    System.out.println(time);
    //既有日期又有时间
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);
    //对日期格式化
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
    System.out.println(localDateTime.format(formatter));
    //把文本转化为日期类
    String txt = "2018年10月20日 21:31:43";
    formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
    //LocalDateTime的静态方法parse(txt,formatter),使用formatter格式把文本转换为日期对象
    System.out.println(LocalDateTime.parse(txt, formatter));

    System.out.println("************************************与数学相关的类************************************");
    System.out.println(Math.cbrt(1000000));//立方根
    System.out.println(Math.sqrt(100));//平方根
    System.out.println(Math.pow(3, 4));//3的4次方
    for (int i = 0; i < 10; i++) {
        //产生[0,1)之间的随机数
        System.out.println(Math.random());
    }
    System.out.println("*******************************************数字格式化 DecimalFormat   ******************************************");
    // #表示任意数字 ;   0表示任意数字不足的位数补0; ,表示千分位 ;   .表示小数点;
    DecimalFormat decimalFormat = new DecimalFormat("###,###.0000");
    System.out.println(decimalFormat.format(123456.45));
    System.out.println("******************************* Random 随机数类 ***************************************");
    Random random = new Random();
    for (int j = 1; j <= 10; j++) {
        //产生小数[0,1)
        System.out.println(random.nextDouble());
    }
    System.out.println("-----------------------------");
    for (int j = 0; j <= 10; j++) {
        //产生整数
        System.out.println(random.nextInt());
    }
    System.out.println("---------**************------------");
    for (int j = 0; j <= 10; j++) {
        //产生指定范围的随机整数[0,100)
        System.out.println(random.nextInt(100));
    }
    System.out.println("*************************  BigInteger / BigDecimal ***************************");
    //大的整数&大的小数,科学运算,财务预算时候使用,精度要求比较高时候使用
    //val:变量长度越长精度越高
    BigInteger k1 = new BigInteger("1234456789988979979977");
    BigInteger k2 = new BigInteger("898988956789988979979977");
    //相加
    BigInteger k3 = k1.add(k2);
    System.out.println(k3);
    //相减
    k3 = k2.subtract(k1);
    System.out.println(k3);
    //相乘
    k3 = k1.multiply(k2);
    System.out.println(k3);

    System.out.println("*******************    BigDecimal   ****************************************");
    //大的小数
    BigDecimal m1=new BigDecimal("12345678979.4564311234");
    BigDecimal m2=new BigDecimal("4567899898565.899878978");
    //小数有可能除不断的情况,小数相除时,一般指定最后小数的处理方式 随便选择RoundingMode.UP一个变量,否则报错
    BigDecimal m3 = m2.divide(m1, RoundingMode.UP);
    System.out.println(m3);
}

}

///**************** 下面是测试结果演示*********************************///

/Date的用法*******/
Sat Oct 20 23:11:03 CST 2018
1540048263320
2018年10月20日 23:11:03
Sat Oct 20 18:50:03 CST 2018
1540048263398
Sat Oct 20 23:11:03 CST 2018
/*******Calendar的用法/
2018-9-20 23:11:3
22
13
10
Tue Nov 13 23:11:03 CST 2018
1542121863398
**线程安全的日期类:在java.time包中(从jdk8开始才有的)
Sat Oct 20 23:11:03 CST 2018
23:11:03.523
2018-10-20T23:11:03.523
2018年10月20日 23:11:03
2018-10-20T21:31:43
与数学相关的类
100.0
10.0
81.0
0.5343810176195
0.42155958671973204
0.08485319645743916
0.47378658961006626
0.06051313743899556
0.15120641327178974
0.1451473663131415
0.5309266658616042
0.5288048139115853
0.05110018312180442
*******************************************数字格式化 DecimalFormat ******************************************
123,456.4500
******************************* Random 随机数类 ***************************************
0.14663205207231111
0.014831252326256261
0.7978704489835184
0.020736390351512424
0.24199857782992396
0.6722133093094831
0.35307030168184794
0.06421290414920633
0.8886663449160382
0.5277880310292538

-1505278265
1652927467
626382616
1619882559
1742906962
-1938405145
1839359425
1574796686
1869859954
-1684356056
-1534274733
---------**************------------
31
22
90
45
10
48
5
57
89
93
96
************************* BigInteger / BigDecimal ***************************
900223413579977959959954
897754500000000000000000
1109763021834511624057175111328501307320920529
******************* BigDecimal ****************************************
369.999892770

Process finished with exit code 0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值