当前位置 > it书童 > java > 正文

Java DateFormat 类如何使用

java it书童 2020-08-08 22:11:50 0赞 0踩 102阅读 0评论

java.text.DateFormat 是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换

格式化:按照指定的格式,从Date对象转换为String对象

解析:按照指定的格式,从String对象转换为Date对象

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat。这个类需要一个模式(格式)来指定格式化或解析的标准

构造方法为:public SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

参数pattern是一个字符串,代表日期时间的自定义格式。

格式规则

常用的格式规则为:

标识字母(区分大小写) 含义
y
M
d
H
m
s

更详细的格式规则,可以参考SimpleDateFormat类的API文档

DateFormat类的常用方法有:

  • public String format(Date date):将Date对象格式化为字符串。

  • public Date parse(String source):将字符串解析为Date对象。

format 方法

使用format方法的代码为:

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

public class Test {
    public static void main(String[] args) {
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = df.format(date);
        System.out.println(str); // 2020-08-08 22:00:38
    }
}

parse 方法

使用parse方法的代码为:

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

public class Test {
    public static void main(String[] args) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = "2020-08-08 22:00:38";
        Date date = df.parse(str);
        System.out.println(date); // Sat Aug 08 22:00:38 CST 2020
    }
}

案例:计算一个人出生距今多少天

思路:

1.获取当前时间对应的毫秒值

2.获取自己出生日期对应的毫秒值

3.两个时间相减(当前时间 – 出生日期)

代码实现:

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

public class Test {
    public static void main(String[] args) throws ParseException {
        System.out.println("请输入出生日期 格式 YYYY-MM-dd");
        String birthday = new Scanner(System.in).next();
        // 将字符串日期转为 Date 对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthdayDate = sdf.parse(birthday);
        // 获取今天的日期对象
        Date todayDate = new Date();
        // 将两个日期转为毫秒值
        long birthdaySecond = birthdayDate.getTime();
        long todaySecond = todayDate.getTime();
        long seconds = todaySecond - birthdaySecond;
        if (seconds < 0) {
            System.out.println("别闹,你还没出生呢");
        } else {
            System.out.println(seconds / 1000 / 60 / 60 / 24);
        }
    }
}
转载须注明出处:https://www.itshutong.com/articles/568/how-to-use-java-dateformat-class
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
发表评论
我有句话,不知当讲不当讲?
要讲之前请先 登录