任务描述
相关知识
日期的格式化
时间的格式化
时间与日期的组合格式化
编程要求
测试说明
任务描述
本关任务:接收给定的日期时间字符串,输出该日期是该年中的第几天、年月日、24 小时制的时、两位数的分钟以及两位数的秒钟。
相关知识
为了完成本关任务,你需要掌握:
**1.**日期的格式化;
**2.**时间的格式化;
**3.**时间与日期的组合格式化。
日期的格式化
在程序设计中,经常涉及到时间以及日期的输入输出,想要输出满意的日期和时间格式需要大量的代码和算法才能实现。Java 中 format()
方法通过使用特定的转换字符作为参数来实现对时间和日期的格式化,极大的方便了平时的使用。
我们可以使用如下代码得到***当前日期是当月的第几天***:
// 创建Date对象,date对象表示特定日期和时间 Date date = new Date("2020/02/03 20:50:31"); System.out.println(date); System.out.println(String.format("今天是一个月中的第:%te天",date));
执行结果: Mon Feb 03 20:50:31 CST 2020 今天是一个月中的第:3天
上述代码中 %te 是转换符,常用的日期转换符如下表所示。
转换符 说明 示例输出
%ta 星期几简称 星期一
%tb 月份简称 二月
%te 一个月中的第几天 (1-31)
%tc 包括全部日期和时间信息 星期二,三月 25 13:37:22 cst 2019
%td 一个月中的第几天(01-31) 02
%tm 月份 03
%ty 2位年份 19
%tY 4位年份 2019
%tj 一年中的第几天(001-366) 03
示例:
// 创建Date对象,Date对象表示系统当前日期时间
Date date = new Date();
System.out.println(date);
String day = String.format("%te", date); // 一个月中的某一天。
String month = String.format("%tb", date); // 指定语言环境下的月份
String week = String.format("%ta", date); // 指定环境下星期
String foryear = String.format("%tY", date); // 四位年份
String oneyearday = String.format("%tj", date); // 一年中的第几天
String onemonthday = String.format("%td", date); // 一个月中的第几天
String onemonth = String.format("%tm", date); // 月份(纯数字)
String twoyear = String.format("%ty", date); // 两位数年份
System.out.println(day);
System.out.println(month);
System.out.println(week);
System.out.println(foryear);
System.out.println(oneyearday);
System.out.println(onemonthday);
System.out.println(onemonth);
System.out.println(twoyear);
执行结果:
Mon Feb 03 21:04:26 CST 2020 3 二月 星期一 2020 034 03 02 20
时间的格式化
使用 format()
方法,不仅能够实现日期的格式化,还可以实现时间的格式化,它可以将时间格式化为时,分,秒,毫秒。格式化时间的转换符如下表。
转换符 说明 示例 %tH 2位数的24小时制小时(00-23) 14 %tI 2位数的12小时制小时(01-12) 05 %tK 2位数的24小时的小时(0-23) 5 %tl 2位数的12小时制的小时(1-12) 10 %tM 2位数的分钟(00-59) 05 %tS 2位数的秒数 14 %tL 3位数的毫秒数 920 %tN 九位数的微妙数 062000000 %tp 上午或下午的标记 下午 %tz 相对于GMT RFC 82格式的数字时区偏移量 CST %tZ 时区的缩写形式的字符串 CST %ts 1970-01-01 00:00:00 至现在经过的秒数 1206426646 %tQ 1970-01-01 00:00:00 至现在经过的毫秒数 1206426737453
使用示例:
Date date = new Date();
System.out.println(date);
String hour=String.format("%tH", date); // 格式化date,24小时制的小时。
String minute=String.format("%tM", date); // 两位数的分钟。
String second=String.format("%tS", date); // 两位数的秒钟。
System.out.println("现在的时间是:"+hour+"点"+minute+"分"+second+"秒"); // 输出时间。
执行结果:
Mon Feb 03 21:11:42 CST 2020 现在的时间是:21点11分42秒
时间与日期的组合格式化
在日常使用中,我们通常需要输出固定格式的时间日期,一方面,我们可以通过组合以上格式化转化符来实现(较麻烦),另一方面,我们可以使用以下固定的格式化来实现。
转换符 说明 示例
%tF 按照年-月-日格式输出(4位年份) 2019-2-26
%tD 月/日/年格式输出(2位年份) 02/26/19
%tc 输出全部日期和时间信息 星期三 三月 25 15:20:03 CST 2019
%tr 时:分:秒 PM(AM)格式(12小时制) 10:23:45 下午
%tT 时:分:秒格式(12小时制) 15:23:34
%tR 时:分格式(24小时制) 15:34
示例:
Date date = new Date();
System.out.println(date);
// 第一种日期格式 2019-03-26
String day1=String.format("%tF", date);
// 第二种日期格式 03/26/19
String day2=String.format("%tD", date);
// 第一种时间格式 03:22:34 下午 (时:分:秒 PM/AM 12小时制)
String time1=String.format("%tr", date);
// 第二种时间格式 15:34:23 (时:分:秒 24小时制)
String time2=String.format("%tT", date);
// 第三种时间格式 15:23 (时:分)
String time3=String.format("%tR", date);
// 输出全部时间日期信息
String timeandday=String.format("%tc",date);
// 输出各种格式化时间日期
System.out.println(day1);
System.out.println(day2);
System.out.println(time1);
System.out.println(time2);
System.out.println(time3);
System.out.println(timeandday);
执行结果:
Mon Feb 03 21:34:37 CST 2020 2020-02-03 02/03/20 09:34:37 下午 21:34:37 21:34 星期一 二月 03 21:34:37 CST 2020
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。
例:
测试输入:
1900/12/25 12:02:31
预期输出:
该日期是这一年中的第359天
该日期的年月日为:1900-12-25
时:12
分:02
秒:31
注意:最后有一个空行。
开始你的任务吧,祝你成功!
答案测试运行 <–请点击
import java.util.Date;
import java.util.Scanner;
public class StrTest {
public static void main(String[] args) {
// 请在Begin-End间编写代码
// 第一步:接收给定的日期时间字符串
Scanner input=new Scanner(System.in);
String s1=input.nextLine();
// 第二步:创建Date对象
Date date=new Date(s1);
// 第三步:格式化输出给定日期时间字符串是该年中的第几天
String oneyearday=String.format("%tj",date);
System.out.println("该日期是这一年中的第"+oneyearday+"天");
// 第四步:格式化输出给定日期和时间字符串的年月日
String day1=String.format("%tF",date);
System.out.println("该日期的年月日为:"+day1);
// 第五步:格式化输出给定日期和时间字符串的24小时制的小时
String day2=String.format("%tH",date);
System.out.println("时:"+day2);
// 第六步:格式化输出给定日期和时间字符串的两位数的分钟
String day3=String.format("%tM",date);
System.out.println("分:"+day3);
// 第七步:格式化输出给定日期和时间字符串的两位数的秒钟
String day4=String.format("%tS",date);
System.out.println("秒:"+day4);
}
}



