日期类Date/DateFormat

Date是日期类,表示特定的瞬间,精确到毫秒。
DateFormat针对日期进行格式化和针对字符串进行解析的类,但是是抽象类,所以使用其子类SimpleDateFormat

  • 构造方法
    • Date();     根据当前的毫秒值创建日期对象
    • Date(long date); 根据给定的毫秒值创建日期对象
  • 获取
    • public long getTime():获取时间,从Date得到一个毫秒值,以毫秒为单位
  • 设置
    • public void setTime(long time):设置时间
public class DateDemo {
    public static void main(String[] args) {
        // 创建对象
        Date d = new Date();
        System.out.println("d:" + d);

        // 创建对象
        long time = 1000 * 60 * 60; // 1小时
        Date d2 = new Date(time);
        System.out.println("d2:" + d2);

        // 获取时间
        time = d.getTime();
        System.out.println(time);
        System.out.println(System.currentTimeMillis());

        // 设置时间
        d.setTime(1000);      //1秒
        System.out.println("d:" + d);
    }
}

输出:
d:Tue Apr 20 01:00:58 CST 2021
d2:Thu Jan 01 09:00:00 CST 1970
1618851658156
1618851658196
d:Thu Jan 01 08:00:01 CST 1970

创建、设置 Date 类对象都是通过毫秒值进行的,而日常开发中,一般都是字符串,如:2021-04-20 01:04:05,所以需要有 String 、Date相互转换的类:DateForamt。

DateForamt:可以进行日期和字符串的格式化和解析,但是由于是抽象类,所以使用具体子类SimpleDateFormat

  • 构造方法
    • public SimpleDateFormat(); 默认模式
    • public SimpleDateFormat(String pattern); 给定的模式
模式说明
y
M
d
H
m
s

转换方式:

  • Date 转换 String(格式化)
    • public final String format(Date date)
  • String 转换 Date(解析)
    • public final Date parse(String s)
public class TestDemo {
    public static void main(String[] args) throws ParseException {
        // Date -- String
        Date d = new Date();
        // 给定模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        // public final String format(Date date)
        String s = sdf.format(d);
        System.out.println(s);

        //String -- Date
        String str = "2021-04-20 12:12:12";
        //在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date dd = sdf2.parse(str);
        System.out.println(dd);
    }
}
输出:
2021042012:51:19
Tue Apr 20 12:12:12 CST 2021

面试题:计算你来到世界上多长时间?

public class TestDemo {
    public static void main(String[] args) throws ParseException {
        // 键盘录入你的出生的年月日
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的出生年月日:");
        String line = sc.nextLine();

        // 把该字符串转换为一个日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d = sdf.parse(line);

        // 通过该日期得到一个毫秒值
        long myTime = d.getTime();

        // 获取当前时间的毫秒值
        long nowTime = System.currentTimeMillis();

        // 用D-C得到一个毫秒值
        long time = nowTime - myTime;

        // 把E的毫秒值转换为年
        long day = time / 1000 / 60 / 60 / 24;

        System.out.println("你来到这个世界:" + day + "天");

        // 可以使用BigInterger
        BigInteger divide = BigInteger.valueOf(System.currentTimeMillis())
                .subtract(BigInteger.valueOf(d.getTime()))
                .divide(new BigInteger("" + 1000 * 60 * 60 * 24));
        System.out.println(divide);
    }
}

输出:
请输入你的出生年月日:
1993-04-16
你来到这个世界:1023110231

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会叫的狼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值