admin管理员组文章数量:1567917
任务描述
本关任务:使用 SimpleDateFormat 类格式化后输出 30 天后的时间信息。
相关知识
在之前的学习任务中,我们对格式化输出日期类时间已经有了一定的了解,这里我会为大家详细介绍 Java 如何格式化输出日期类时间。
在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,我们这里主要为大家介绍 SimpleDateFormat 类的使用。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类,它允许进行格式化(日期→文本)、解析(文本→日期)和规范化。SimpleDateFormat 可以选择任何用户定义的日期/时间格式的模式。
SimpleDateFormat 类主要有如下 3 种构造方法:
- SimpleDateFormat():用默认的格式和默认的语言环境构造;
- SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造;
- SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环境构造。
例子:
Date date = new Date( );
SimpleDateFormat sft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
System.out.println(sft.format(date)); // 将其按照指定格式输出
执行结果:
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 |
a | A.M./P.M. 标记 | PM |
k | 一天中的小时(1~24) | 24 |
K | A.M./P.M. (0~11)格式小时 | 10 |
z | 时区 | Eastern Standard Time |
例子:
Date date = new Date( );
SimpleDateFormat sft1=new SimpleDateFormat("现在时间是 "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); // // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
SimpleDateFormat sft2=new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); // // 用指定的格式和默认的语言环境构造 SimpleDateFormat 对象
System.out.println(sft1.format(date));
System.out.println(sft2.format(date));
执行结果:
现在时间是 2020 年 02 月 19 日 星期三 11 点 11 分 12 秒
一年中的第 50 天 一年中第8个星期 一月中第4个星期 在一天中111时 CST时区
SimpleDateFormat 类常用方法如下:
-
public final String format(Date date):将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer;
-
public Date parse(String source):解析字符串的文本,生成 Date;
-
toPattern():返回描述此日期格式的模式字符串。
例子:
Date date = new Date(); // 以当前时间创建 Date 对象
SimpleDateFormat sft1=new SimpleDateFormat("现在时间是 "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒"); // 按照指定格式和默认和默认的语言环境构造 SimpleDateFormat 类
System.out.println(sft1.format(date)); // 将给定的 Date 格式化为日期/时间字符串
String time = "2016-03-24 13:00:05"; // 定义一个日期/时间字符串
SimpleDateFormat sft2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 定义它的解析规则
Date parse = null;
try {
parse = sft2.parse(time); // 将时间字符串转换为 Date 对象。
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(parse);
String s = sft1.toPattern(); // 返回描述此日期格式的模式字符串
System.out.println(s);
执行结果:
现在时间是 2020 年 02 月 19 日 星期三 14 点 19 分 31 秒
Thu Mar 24 13:00:05 CST 2016
现在时间是 yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒
/**
* 使用 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 **********/
}
}
版权声明:本文标题:学习-Java常用类之日期类格式化模式之输出时间 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726472010a1072192.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论