学习-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
java时间日期格式转换
s秒数55
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
例⼦:
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 = Pattern(); // 返回描述此⽇期格式的模式字符串
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 秒
/**
* 使⽤ SimpleDateFormat 类格式化后输出 30 天后的时间信息。
*/
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 = Long();
Date date = new Date(l);
Calendar calendar = Instance();
calendar.setTime(date);
calendar.add(Calendar.DATE,30);
Date d1 = Time();
SimpleDateFormat SDF = new SimpleDateFormat("30天后为yyyy年MM⽉dd⽇ HH点mm分ss秒。");        System.out.println(SDF.format(d1));
/********** End **********/
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。