Java基础Date日期类

简介: Java基础Date日期类

获取系统当前时间


Date d = new Date();


日期格式化:Date --> String


yyyy-MM-dd HH:mm:ss SSS
SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss SSS");
String s = sdf.format(new Date());


String --> Date


SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2008-08-08 08:08:08");


获取毫秒数


//获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
//1秒 = 1000毫秒
long begin = System.currentTimeMillis();
Date d = new Date(begin - 1000 * 60 * 60 * 24);
public class DateTest03 {
    public static void main(String[] args) {
        // 这个时间是什么时间?
        // 1970-01-01 00:00:00 001
        Date time = new Date(1);// 注意:参数是一个毫秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String format = sdf.format(time);
        System.out.println(format); // 1970-01-01 08:00:00 001// 北京是东8区。差8个小时。
        //查询距今天前24小时的日期时间
        Date nowtimeStr = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String yesterdayTime = sdf2.format(nowtimeStr);
        System.out.println(yesterdayTime);
    }
}


运行结果:


0a2653c851af460fa595bd959398a8f1.png


示例代码01:


public class DateTest01 {
    public static void main(String[] args) throws ParseException {
        // 获取系统当前时间(精确到毫秒的系统当前时间)
        // 直接调用无参数构造方法就行。
        Date nowtime = new Date();
        System.out.println(nowtime);
        // 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 nowtimeStr = 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");
        String s = nowtimeStr.format(nowtime);
        System.out.println(s);
        // 假设现在有一个日期字符串String,怎么转换成Date类型?
        // String --> Date
        String s1 = "1997-09-19 19:16:10 888";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        //SimpleDateFormat sdf2 = new SimpleDateFormat("格式不能随便写,要和日期字符串格式相同");
        // 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException
        Date date = sdf.parse(s1);
        System.out.println(date);//Fri Aug 08 08:08:08 CST 2008
    }
}


运行结果01:


2d65d23f6d4748949b924e4057485923.png


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

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

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

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

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

System.exit(0) 退出JVM。


DecimalFormat数字格式化


###,###.## 表示加入千分位,保留两个小数。

###,###.0000 表示加入千分位,保留4个小数,不够补0

BigDecimal


财务软件中通常使用BigDecimal

BigDecimal 属于大数据,精度极高。不属于基本数据类型,属于java对象(引用数据类型)

这是SUN提供的一个类。专门用在财务软件当中。

注意:财务软件中double是不够的。咱们之前有一个学生去用友面试,经理就问了这样一个问题:

你处理过财务数据吗?用的哪一种类型?

千万别说double,说java.math.BigDecimal


示例代码02:


public class DecimalTest01 {
    public static void main(String[] args) {
        /*
        * 数字格式化有哪些?
        *     # 代表任意数字
        *     ,代表千分位
        *     . 代表小数点
        *     0 代表不够补0
        * */
        //##,##.##表示加入千分位,保留两位小数
        DecimalFormat dec = new DecimalFormat("###,###.##");
        String s = dec.format(1234.56);
        System.out.println(s);
        String s2 = dec.format(1234.56789);
        System.out.println(s2);
        DecimalFormat dec1 = new DecimalFormat("###,###.0000");//保留四个小数,不够补上0
        String s1 = dec1.format(1245.56);
        System.out.println(s1);
    }
}


运行结果02:


6de278e6d6694ce5bb08e7e842b7e74b.png


示例代码03:


public class BigDecimalTest01 {
    public static void main(String[] args) {
        // 这个100不是普通的100,是精度极高的100
        BigDecimal v1 = new BigDecimal(100);
        // 精度极高的200
        BigDecimal v2 = new BigDecimal(200);
        // 求和
        // v1 + v2; // 这样不行,v1和v2都是引用,不能直接使用+求和。
        BigDecimal v3 = v1.add(v2);// 调用方法求和。
        System.out.println(v3);//300
        BigDecimal v4 = v2.divide(v1);
        System.out.println(v4);//2
    }
}


运行结果03:


12c3b7f3f8814309a195c64f051d4445.png

相关文章
|
10天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
26 1
|
10天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
22 0
java基础(13)String类
|
3天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
26 14
|
20天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
20天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
20 1
Java——String类详解
|
5天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
15 3
|
10天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
25 10
|
7天前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
7天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
10天前
|
Java
java的class类
java的class类
18 5
下一篇
无影云桌面