1、Date日期处理类
在Java里面提供了一个java.util.Date类,这个类如果直接实例化就可以获取当前的日期时间。
范例:观察java.util.Date类(获取当前时间)
代码 | 结果 |
package cn.demos; import java.util.Date; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Date date = new Date(); System.out.println(date); } } | Sat Oct 10 17:18:52 CST 2020 |
从上面程序可以得到当前的系统时间,但是时间格式为国际标准。
观察Date的构造方法:
(源码)定义 | |
无参构造方法 | public Date() { this(System.currentTimeMillis()) } |
有参构造方法 | public Date(long date){ fastTime = date; } |
通过对上面的源码分析,可以得知:Date类中只是对long数据的一种包装。所以Date类中一定会提供有所谓的日期与long数据类型之间转换的方法:
方法 | 定义 |
将long转化为Date | |
将Date转为long | |
范例:观察Date和long直接的转换
代码 | 结果 |
package cn.demos; import java.util.Date; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Date date = new Date(); long current = date.getTime(); current += 864000000;// 10天的秒数 System.out.println(new Date(current));// long转为Date } } | Tue Oct 20 17:34:05 CST 2020 |
注意:构造方法中使用long类型是因为long中可以保存毫秒的数据级别,这样方便程序的处理。
2、SimpleDateFormat日期处理类
因为Date可以获取当前的日期时间,但是它的默认情况下的格式并不是我们常用的格式,所以,就需要对显示格式进行格式化处理。
所以在java.text包中提供有SimpleDateFormat类。
SimpleDateFormat类的结构关系:
类 | 定义 | 描述 |
SimpleDateFormat类 | | 继承于DateFormat |
DateFormat 类 | public abstract class DateFormat extends Format | 抽象类;继承于Format |
Format 类 | public abstract class Format extends Object implements Serializable, Cloneable | 抽象类 |
进行日期方法如下:
方法 | 定义 | 注意 |
【DateFormat类提供的 】将日期格式化 | | 所有的格式化返回类型都是字符串 |
【DateFormat类提供的 】将字符串转为日期 | public Date parse(String source) throws ParseException | |
【SimpleDateFormat提供的】构造方法 | | |
日期格式 | 年(yyyy)、月(MM)、日(dd)、时(HH)、分(mm)、秒(ss)、毫秒(SSS) |
日期转换格式:
1)以下模式字母定义(从所有其他字符
'A'
到
'Z'
和从
'a'
到
'z'
保留):
2)以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间是美国太平洋时区的2001-07-04 12:08:56当地时间:
范例:格式化日期显示
代码 | 结果 |
package cn.demos; import java.text.SimpleDateFormat; import java.util.Date; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String str = sdf.format(date); System.out.println(str); } } | 2020-10-10 18:05:02 463 |
下面的例子是将字符串转为日期
范例:将字符串转为日期
代码 | 结果 |
package cn.demos; import java.text.SimpleDateFormat; import java.util.Date; public class JavaAPIDemo { public static void main(String[] args) throws Exception { // 字符串的日期 String birthday = "2019-11-11 11:11:11 111"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); // 日期接收 Date date = sdf.parse(birthday); System.out.println(date); } } | Mon Nov 11 11:11:11 CST 2019 |
注意:若是你的字符数字定义超过相应的范围,则会自动进行进位处理,即输入的月份是14,则会在年上增加一年,月份转为2月。
范例:数字格式化
代码 | 结果 |
package cn.demos; import java.text.NumberFormat; public class JavaAPIDemo { public static void main(String[] args) throws Exception { double money = 234975446.244; String str = NumberFormat.getInstance().format(money); System.out.println(str); } } | 234,975,446.244 |
通过我们的学习可以发现,String字符串可以向所有类型转换,