日期处理类

日期处理类

1、Date 日期处理类

日期时重要的程序单元,在Java中如果先获得到当前的日期时间可以直接通过java.lang.Date类来实现,此类的常用操作方法如表1-1所示。

表 1-1
方法类型描述
public Date()构造实例化Date类对象
public Date(long date)构造将数字变为Date类对象,long为日期时间数据
public long getTime()普通获取日期对象从1970.1.1 00:00:00到现在的毫秒值,类型为long
public void setTime普通设置时间,给的是毫秒值

在Date类中提供了两个构造方法,为了清楚这两个类的构造方法的作用,其源码为:

/*
关于Date类的构造方法
*/
public class Date{
    //fastTime保存时间戳数据,此数据类型为long
    private transient long fastTime;		//保存当前日期时间数据
    
    public Date() {
        this(System.currentTimeMillis());	//调用单参构造
	}
    
    public Date(long date){
        fastTime = date;
    }
    
    //其他省略,可以参考JDK 1.8源代码
}

通过构造方法我们发现,当调用Date类中无参构造方法时利用System类获取当前日期时间戳而后通过Date类的单参构造方法进行类对象实例化。Date类对象保存当前日期时间依靠的是时间戳数字(此类型为long),Date类也提供有两种数据类型的转换支持。


范例:获取当前日期时间

package edu.blog.test06;

import java.util.Date;

public class DateTestDemo01 {
    public static void main(String[] args) {
        Date date01 = new Date();
        System.out.println(date01);

        //Date 与 long 之间转换处理
        long currentTime = date01.getTime();        //获取当前时间戳数据
        currentTime += 60 * 60 * 24 * 1000 * 10;    //10天的毫秒值
        System.out.println(new Date(currentTime));
    }
}
结果:
Thu Apr 01 14:43:23 CST 2021
Sun Apr 11 14:43:23 CST 2021

本程序利用Date类提供的无参构造实例化了Date类对象,其保存的时间戳是以毫秒的形式记录的当前日期时间,所以本程序中将当前的日期时间戳加上10天的毫秒值就可以获取10天后的日期。

tips:JDK 1.8开始提供有java.time.LocalDateTime类


2、SimpleDateFormat 日期格式化

为了方便文本显示,Java提供有格式化处理机制。使用java.util.Date类可获得当前的日期时间数据,但是最终的数据显示格式并不方便阅读,那么此时就可以考虑对显示的结果进行格式化处理操作,而这一个操作就需要通过java.text.SimpleDateFormat类完成。该类的继承图如图 2-1所示。

图 2-1

由上图可知,Format是格式化擦操作的父类,其可以实现日期格式化、数字格式化以及文本格式化,而SimpleDateFormat是DateFormat的子类。该类的常用方法如表 2-2所示。

表 2-2
方法类型描述
public SimpleDateFormat()构造使用默认模式和日期格式实例化对象
public SimpleDateFormat(String pattern)构造使用给定的模式和日期格式实例化对象
public Date parse(String source) throws ParseException普通将字符串转化为日期格式
public final String format(Date date)普通将日期格式转化为字符串

在日期格式化操作中必须设置有完整的日期转化模式,模式中通过特定的日期标记可以将一个日期格式中的日期数字提取出来。如表 2-3所示。

表 2-3
标记描述
y年,年份是4位数,所以需要使用 yyyy 表示年
M年中的月份,月份是两位数字,所以需要使用 MM 表示月
d年中的天数,天数是两位数字,所以需要使用 dd 表示日
H一天中的小时数(24小时),小时数是两位数字,使用 HH 表示小时
m小时中的分钟数,分钟是两位数字,使用 mm 表示分钟
s分钟中的秒数,秒是两位数字,使用 ss 表示秒
S毫秒数,毫秒数是3位数字,使用 SSS 表示毫秒

范例1:将日期格式转化为字符串

package edu.blog.test06;

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

//将日期格式转化为字符串
public class DateTestDemo02 {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        String string = sdf.format(date);
        System.out.println(string);
    }
}
结果:
2021-04-01 22:24:55:993

本程序通过SimpleDateFormat类依据指定格式将当前的日期时间进行了格式化处理,这样使得信息阅读更加直观。

范例2:将字符串转化为Date对象

package edu.blog.test06;


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

//将日期格式转化为字符串
public class DateTestDemo03 {
    public static void main(String[] args) throws ParseException {
        //字符串日期数据
        String dateString = "2021-04-01 22:24:55:993";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        //日期字符串格式为Date
        Date date = sdf.parse(dateString);
        System.out.println(date);
    }
}
结果:
Thu Apr 01 22:24:55 CST 2021

本程序需要将字符串格式转化为日期型数据,这样就要要求字符串必须按照给定的转换模式进行定义。


Tips:关于字符串转化为其他数据类型。

在实际项目开发中,经常需要用户进行内容的输入,而对于输入的数据往往都会String进行表示,而经过了一系列学习之后,发现String可以转为任意的基本数据类型,也可以通过SimpleDateFormat类格式化为日期型,这些都属于开发中的常规操作,应该熟练掌握。


注:此文章为个人笔记,如有错误,敬请指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窝在角落里学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值