通过DateTimeFormatter格式器格式化日期时间

通过DateTimeFormatter格式器格式化日期时间

题目要求:

用扫描器获取输入的时间(年月日时分),这个时间的格式是常用的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输入时间.格式化的时间参考企业微信聊天记录的展示时间.

知识需求

  1. java基础知识
  2. Scanner扫描器
  3. 普通类,枚举类
  4. final修饰符
  5. 正则表达式
  6. DateTimeFormatter格式器(格式化及解析知识)
  7. 包装类,打印对象
  8. 一系列的常用方法等

实现思路及简易步骤

  1. 获取扫描器,通过扫描器获取输入的时间(年月日时分)
  2. 创建一个Notice类(提示信息类),用于存取日期时间格式化期间要用到的完整的提示信息(如普通类,枚举类)
  3. 创建一个Regex枚举类,用于匹配日期时间的正则表达式,把传入的日期时间匹配相对应的正则表达式,将匹配好的日期时间传入日期时间工具类的获取日期时间的方法中,然后进行具体的格式化实现
  4. 这个时间的格式是常用的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输入时间.格式化的时间参考企业微信聊天记录的展示时间.
  5. 需要实现:
    同年:
    同月:月日+时分
    今天:上午/下午+时分
    明天:明天+时分
    昨天:昨天+时分
    今天之前(包括今天)的一周内:星期+时分
    不同月时:
    上个月(通过调整时间进行测试):
    今天:上午/下午+时分
    明天:明天+时分
    昨天:昨天+时分
    今天之前(包括今天)的一周内:星期+时分
    本月:月日+时分
    下个月(通过调整时间进行测试):
    明天:明天+时分
    其他月:月日+时分
    不同年:年月日+时分

程序测试情景如下:

欢迎使用日期时间格式器!
若退出程序,请输入'exit'或'退出' !
请参考企业微信聊天记录的展示时间,输入一个合法的时间:
合法时间格式为日期格式为yyyy.MM.dd HH:mm
         形如:2020.1.10 19:19
    或日期格式为yyyy-MM-dd HH:mm
         形如:2020-1-10 19:19
    或日期格式为yyyy/MM/dd HH:mm
         形如:2020/1/10 19:19
请输入:
2020/1/11 19:19
格式化后日期时间为:
          下午 19:19
若退出程序,请输入'exit'或'退出' !
2020/1/12 19:19
格式化后日期时间为:
          明天 19:19
若退出程序,请输入'exit'或'退出' !
2020/1/10 19:19
格式化后日期时间为:
          昨天 19:19
若退出程序,请输入'exit'或'退出' !
2020/1/9 19:19
格式化后日期时间为:
          周四 19:19
若退出程序,请输入'exit'或'退出' !
2020/1/3 19:19
格式化后日期时间为:
          1月3日 19:19
若退出程序,请输入'exit'或'退出' !
2020/2/29 19:19
格式化后日期时间为:
          2月29日 19:19
若退出程序,请输入'exit'或'退出' !
2019/2/28 19:19
格式化后日期时间为:
          2019年2月28日 19:19
若退出程序,请输入'exit'或'退出' !

如果需要其他情形,请自行测试!

实现代码如下:

测试类
package datetimeformatter;

/**
 * 日期时间测试类<br>
 * 2020年1月10日 上午9:43:16
 * 
 * @author zcf
 * @version 1.0
 */
public class Test {
	/**
	 * 程序入口
	 * 
	 * @param args 入口参数
	 */
	public static void main(String[] args) {
		/**
		 * 进入时间格式器
		 */
		DateTime.startIn();
	}
}
日期时间类
package datetimeformatter;

import java.util.Scanner;

/**
 * 日期时间类<br>
 * 2020年1月10日 上午9:44:13
 * 
 * @author zcf
 * @version 1.0
 */
public class DateTime {
	/**
	 * 闰年日期正则
	 */
	private static final String LEEP_YEAR = Regex.LEEP_YEAR.getDesc();

	/**
	 * 平年日期正则
	 */
	private static final String COMMON_YEAR = Regex.COMMON_YEAR.getDesc();
	/**
	 * 时间正则
	 */
	private static final String TIME = Regex.TIME.getDesc();

	/**
	 * 私有构造器 不能创建实例
	 */
	private DateTime() {

	}

	/**
	 * 时间格式器,开始方法
	 */
	public static void startIn() {
		// 进入程序的提示语
		Notice.inTip();
		// 获取扫描器
		Scanner sc = new Scanner(System.in);
		// 判断是否有下一行输入
		wh
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值