学习-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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值