学习-Java常用类之日期类格式化模式之输出时间

任务描述

本关任务:使用 SimpleDateFormat 类格式化后输出 30 天后的时间信息。

相关知识

在之前的学习任务中,我们对格式化输出日期类时间已经有了一定的了解,这里我会为大家详细介绍 Java 如何格式化输出日期类时间。

在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,我们这里主要为大家介绍 SimpleDateFormat 类的使用。

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 可以选择任何用户定义的日期/时间格式的模式。

SimpleDateFormat 类主要有如下 3 种构造方法:

  • SimpleDateFormat():用默认的格式和默认的语言环境构造;
  • SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造;
  • SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环境构造。

例子:

 
  1. Date date = new Date( );
  2. SimpleDateFormat sft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
  3. System.out.println(sft.format(date)); // 将其按照指定格式输出

执行结果:

 
  1. 2020-01-19 09:54:45

在这个例子中我们会看到 “yyyy-MM-dd HH:mm:ss” 这么一串字符,它就是日期和时间模式字符串。

日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串。

白话文的讲:这些 A—Z,a—z 这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字符串还是原样输出。

日期和时间模式表如下(注意大小写,代表的含义是不同的)。

字母描述示例
G纪元标记AD
y四位年份2001
M月份July or 07
d一个月的日期10
h A.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的日子360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
K A.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time

例子:

 
  1. Date date = new Date( );
  2. SimpleDateFormat sft1=new SimpleDateFormat("现在时间是 "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); // // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
  3. SimpleDateFormat sft2=new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); // // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
  4. System.out.println(sft1.format(date));
  5. System.out.println(sft2.format(date));

执行结果:

 
  1. 现在时间是 2020 年 02 月 19 日 星期三 11 点 11 分 12 秒
  2. 一年中的第 50 天 一年中第8个星期 一月中第4个星期 在一天中111时 CST时区

SimpleDateFormat 类常用方法如下:

  • public final String format(Date date):将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer;

  • public Date parse(String source):解析字符串的文本,生成 Date;

  • toPattern():返回描述此日期格式的模式字符串。

例子:

 
  1. Date date = new Date(); // 以当前时间创建 Date 对象
  2. SimpleDateFormat sft1=new SimpleDateFormat("现在时间是 "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); // 按照指定格式和默认和默认的语言环境构造 SimpleDateFormat 类
  3. System.out.println(sft1.format(date)); // 将给定的 Date 格式化为日期/时间字符串
  4. String time = "2016-03-24 13:00:05"; // 定义一个日期/时间字符串
  5. SimpleDateFormat sft2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 定义它的解析规则
  6. Date parse = null;
  7. try {
  8. parse = sft2.parse(time); // 将时间字符串转换为 Date 对象。
  9. } catch (ParseException e) {
  10. e.printStackTrace();
  11. }
  12. System.out.println(parse);
  13. String s = sft1.toPattern(); // 返回描述此日期格式的模式字符串
  14. System.out.println(s);

执行结果:

 
  1. 现在时间是 2020 年 02 月 19 日 星期三 14 点 19 分 31 秒
  2. Thu Mar 24 13:00:05 CST 2016
  3. 现在时间是 yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒
编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中使用 SimpleDateFormat 类格式化后输出 30 天后的时间信息,具体要求如下:

  • 获取键盘输入的毫秒数,输出它 30 天后的时间信息,输出格式:“30天后为xx年xx月xx日 xx点xx分xx秒。”。
测试说明

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

测试输入:

 
  1. 1525960412001

预期输出:

 
  1. 30天后为2018年06月09日 13点53分32秒。

开始你的任务吧,祝你成功!

源代码:

/**
 * 使用 SimpleDateFormat 类格式化后输出 30 天后的时间信息。
 */

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

public class Test {
    public static void main(String[] args) {

        // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
        /********** Begin **********/
        // 获取键盘输入的毫秒数,输出它 30 天后的时间信息
        Scanner input = new Scanner(System.in);
        long l = input.nextLong();
        Date date = new Date(l);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE,30);
        Date d1 = calendar.getTime();
        SimpleDateFormat SDF = new SimpleDateFormat("30天后为yyyy年MM月dd日 HH点mm分ss秒。");
        System.out.println(SDF.format(d1));

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

    }
}

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的日期类常用格式化模式有很多,可以使用SimpleDateFormat输出时间。 示例代码: ``` SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String format = formatter.format(new Date()); System.out.println(format); ``` 上面代码中的"yyyy-MM-dd HH:mm:ss"即为格式化模式,其中: - yyyy表示四位数的年份 - MM表示两位数的月份 - dd表示两位数的日 - HH表示24小时制的两位数小时数 - mm表示两位数的分钟数 - ss表示两位数的秒数 更多于SimpleDateFormat格式化模式详见:https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/text/SimpleDateFormat.html ### 回答2: 时间在我们生活中起着极其重要的作用,无论是记录重要事件,还是安排自己的日程,都需要用到时间。在Java中,日期类是处理时间操作的一个重要工具,而日期类中一个应用广泛的功能就是时间格式化输出Java的日期格式化输出使用的是SimpleDateFormat来实现的。在这个中,有一个format方法,可以将日期转化为特定的格式字符串,以便输出Java中日期格式化输出的格式有很多种,这些格式都是通过特定的字符来表示的。下面,我们来介绍一下常见的日期格式化字符: - yyyy:年份,比如2018。 - MM:月份,比如08表示8月。 - dd:日期,比如28表示28号。 - HH:小时,24小时制,比如17表示下午5点。 - mm:分钟,比如30表示30分。 - ss:秒,比如05表示5秒。 此外,还有一些其他的格式化字符,具体可以参考SimpleDateFormat的官方文档。 为了使输出时间符合我们的需求,我们需要将日期对象先变为SimpleDateFormat对象,然后再调用format方法来进行格式化。如下所示: ```java import java.text.SimpleDateFormat; import java.util.Date; public class Test{ public static void main(String[] args){ //获取当前时间 Date date = new Date(); //使用SimpleDateFormat格式化输出时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(date)); } } ``` 上面的代码中,我们先获取了当前时间,然后使用SimpleDateFormat进行格式化输出输出时间格式为“年-月-日 小时:分钟:秒”。 除了上面的格式之外,还有许多其他的时间格式,可以根据具体的需求来选择不同的格式。掌握Java日期格式化输出的方法,可以更好地进行日期时间处理。 ### 回答3: 在Java中,有一个日期类可以用来操作日期和时间,它就是java.util.Date。但是直接使用Date的输出并不符合常规的日期时间格式,因此我们需要使用DateFormat来进行格式化输出。 DateFormat是一个抽象,不能直接实例化,常用的实现有SimpleDateFormat,可以通过SimpleDateFormat对象的format方法对Date进行格式化输出。 在格式化时,可以使用特定的字符来表示特定的日期时间部分: - y:年份,如2021,表示为yyyy; - M:月份,如1月表示为M,01月表示为MM; - d:天数,如10号表示为d,10日表示为dd; - H:小时数(24小时制),表示为HH; - h:小时数(12小时制),表示为hh; - m:分钟数,表示为mm; - s:秒数,表示为ss; - S:毫秒数,表示为SSS。 在格式化字符串中,还可以添加其他字符,如“年”、“月”、“日”、“时”、“分”、“秒”等中文字符,用于增强输出可读性。 下面是一个示例代码: ```java import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String dateString = sdf.format(date); System.out.println(dateString); } } ``` 以上代码将当前日期格式化输出为:2021年08月12日 15:00:00。 需要注意的是,如果format方法的参数日期为null,则会抛出NullPointerException异常。在实际开发中,我们可以先判断日期是否为null,然后再进行格式化输出。 总之,对于Java日期类格式化输出,我们需要通过DateFormat的实现(如SimpleDateFormat)来进行格式化,使用特定的字符来表示特定的日期时间部分,并可以添加其他字符以增加可读性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值