头歌 学习-Java常用类之Date类

任务描述

本关任务:使用 Date 类的定义与方法,完成日期格式的之间的比较和格式化转换。

相关知识

java.util 包提供了 Date 类来封装当前的日期和时间,我们可以通过该类来操作时间和日期。在使用该类之前,我们需要先导入 java.util.Date 类。

 
  1. import java.util.Date;

Date 类提供了两种构造函数来实例化 Date 对象:

  • 使用当前日期和时间来初始化对象;

     
      
    1. Date date = new Date();
  • 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。

     
      
    1. Date date1 = new Date(1581997363000L);

接下来我们来看 Date 类的一些常用方法,见下表。

方法描述
boolean after(Date date)若当调用此方法的 Date 对象在指定日期之后返回 true,否则返回 false。
boolean before(Date date)若当调用此方法的 Date 对象在指定日期之前返回 true,否则返回 false。
Object clone( )返回此对象的副本。
int compareTo(Date date)比较当调用此方法的 Date 对象和指定日期。两者相等时候返回 0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
boolean equals(Object date)当调用此方法的 Date 对象和指定日期相等时候返回 true,否则返回 false。
long getTime( )返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
void setTime(long time)用自 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒数设置时间和日期。
String toString( )转换 Date 对象为 String 表示形式,并返回该字符串。

例子:

  • boolean after(Date date):若当调用此方法的 Date 对象在指定日期之后返回 true,否则返回 false;
     
      
    1. Date date = new Date(); // 使用当前时间来创建对象
    2. System.out.println(date);
    3. Date date1 = new Date(1581997363000L); // 使用当前参数创建对象
    4. System.out.println(date1);
    5. boolean after = date.after(date1); // 判断 date 是否在指定日期之后
    6. System.out.println(after);
    执行结果:
     
      
    1. Tue Feb 18 12:02:40 CST 2020
    2. Tue Feb 18 11:42:43 CST 2020
    3. true

注意:因为有时区问题,我们是在东八区,所以时间上加了 8 个小时.

  • int compareTo(Date date):比较调用此方法的 Date 对象和指定 Date 对象;

     
      
    1. Date date = new Date(); // 使用当前时间来创建对象
    2. System.out.println(date);
    3. Date date1 = new Date(1581997363000L); // 使用当前参数创建对象
    4. System.out.println(date1);
    5. int i = date.compareTo(date1);// 比较调用此方法的 date 对象和指定 date1 对象
    6. System.out.println(i);

    执行结果:

     
      
    1. Tue Feb 18 12:05:43 CST 2020
    2. Tue Feb 18 11:42:43 CST 2020
    3. 1
  • long getTime( ):返回此对象表示的毫秒数

     
      
    1. Date date1 = new Date(1581997363000L); // 使用当前参数创建对象
    2. System.out.println(date1);
    3. long time = date1.getTime(); // 返回当前对象的毫秒
    4. System.out.println(time);

    执行结果:

     
      
    1. Tue Feb 18 11:42:43 CST 2020
    2. 1581997363000
  • void setTime(long time):根据毫秒数设置时间和日期;

     
      
    1. Date date = new Date(); // 使用当前时间来创建对象
    2. System.out.println(date);
    3. date.setTime(1581997363000L); // 根据毫秒数设置时间
    4. System.out.println(date);

    执行结果:

     
      
    1. Tue Feb 18 12:16:48 CST 2020
    2. Tue Feb 18 11:42:43 CST 2020
  • String toString( ):转换 Date 对象为 String 表示形式,并返回该字符串。

     
      
    1. Date date = new Date(); // 使用当前时间来创建对象
    2. System.out.println(date);
    3. String s = date.toString(); // 将 Date 对象转换为字符串形式
    4. System.out.println(s);

通过上面的学习,我们对 Date 类已经有了一定的了解,但是我们发现上面的日期格式和我们生活中的日期格式不太相同,那我们该怎么办呢?

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。

要想使用该类,我们首先需要导包。

 
  1. import java.text.SimpleDateFormat;

创建一个 SimpleDateFormat 对象:

 
  1. SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

例子:

  • 将日期格式转换为格式化的日期字符串;

     
      
    1. Date date = new Date(); // 使用当前时间来创建对象
    2. System.out.println(date);
    3. SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); // 创建日期格式化类对象
    4. String format = ft.format(date); // //将日期对象转换为字符串
    5. System.out.println(format);

    执行结果:

     
      
    1. Tue Feb 18 12:37:34 CST 2020
    2. 2020-02-18 12:37:34
  • 将 2016年06月18日 12:37:34 转换为日期格式。

     
      
    1. String s1 = "2016年06月18日 12:37:34"; // 创建一个日期格式的字符串
    2. SimpleDateFormat ft = new SimpleDateFormat ("yyyy年MM月dd日 hh:mm:ss");
    3. Date date1 = null;
    4. try {
    5. date1 = ft.parse(s1); // 将字符串转换为日期格式
    6. } catch (ParseException e) {
    7. e.printStackTrace();
    8. }
    9. System.out.println(date1);

    执行结果:

     
      
    1. Sat Jun 18 00:37:34 CST 2016

注意:parse() 需要抛出 ParseException 异常。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中完成日期格式的之间的比较和格式化转换,具体要求如下:

  • 获取键盘输入的 long 类型的值,该值表示毫秒数,以该值为参数创建一个 Date 对象;

  • 以当前时间创建 Date 对象;

  • 将根据键盘输入所创建的日期转换为“xxxx/xx/xx xx时xx分xx秒”这种格式后输出(24 小时制);

  • 比较根据键盘输入所创建的日期是否在当前时间之前,输出格式为:“t时间在当前时间之前:xx”,其中 t 为 上一要求转换后的结果,xx 为判断后的结果。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。

测试输入:

 
  1. 1518927152000

预期输出:

 
  1. 2018/02/18 04时12分32秒
  2. 2018/02/18 04时12分32秒时间在当前时间之前:true

注意:此处冒号为中文冒号,另外平台测试所用时间为 UTC,也就是世界统一时间,并不是北京时间,所以可能与你本地结果相差八个小时。


/**

 * 完成日期格式的之间的比较和格式化转换。

 */

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Scanner;

public class TestDate {

    public static void main(String[] args) {

        // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码

        /********** Begin **********/

          // 获取键盘输入的 long 类型的值,该值表示毫秒数,以该值为参数创建一个 Date 对象

        Scanner sc = new Scanner(System.in);

        String string = sc.next();

        long miao =Long.parseLong(string);

        Date date1 = new Date(miao);

        // 以当前时间创建 Date 对象

        Date date = new Date();

        //将根据键盘输入所创建的日期转换为“xxxx/xx/xx xx时xx分xx秒”这种格式后输出

        SimpleDateFormat ft = new SimpleDateFormat ("yyyy/MM/dd hh时mm分ss秒"); // 创建日期格式化类对象

        String format = ft.format(date1); // //将日期对象转换为字符串

        System.out.println(format);

        // 比较根据键盘输入所创建的日期是否在当前时间之前

        boolean after = date.after(date1); // 判断 date 是否在指定日期之后

        System.out.print(format+"时间在当前时间之前:"+after);

        /********** End **********/

    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值