使用DateTimeFormatter实现格式化时间

这篇博客介绍了如何使用Java的DateTimeFormatter将用户输入的年月日时分格式化,并展示了不同时间情况下的显示方式,如同年、不同年、同月等。文章提供了测试类和工具类的实现细节,包括对日期时间的正则限制和判断平闰年的逻辑。尽管测试无误,但未涵盖跨年和跨月的特殊情况,需额外添加逻辑。
摘要由CSDN通过智能技术生成

用扫描器获取输入的时间(年月日时分),这个时间的格式是常用的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输入时间.格式化的时间参考企业微信聊天记录的展示时间.用DateTimeFormatter实现,功能如下:
同年:
不同年:
同月:月日+上午/下午+时分
同年不同月:月日+时分
今天:上午/下午+时分
明天:明天+上午/下午+时分
昨天:昨天+上午/下午+时分
包括今天在内的一周内:星期+上午/下午+时分
首先看一下测试类:

package hrkj;

import java.util.Scanner;

/**
 * 日期时间测试类
 * 
 * @author 张林琛<br>
 * @date 2020/01/10 08:35:29
 * @version 1.0
 */
public class DateTimeTest {
   

	public static void main(String[] args) {
   
		// 获取Scanner扫描器
		Scanner sc = new Scanner(System.in);
		// 程序开始提示语句
		Hint.HINT_STAR.print();
		// 程序退出提示语句
		System.out.println(Order.ORDER_EXIT.getname());
		while (sc.hasNextLine()) {
   
			String str = sc.nextLine();
			// 判断是否为退出指令
			if (Order.ORDER_EXIT.compare(str)) {
   
				Hint.HINT_END.print();
				//如果退出,则关闭扫描器
				sc.close();
				break;
				// 判断输入的是否为空格或回车
			} else if (str.equals(" ") || str.equals(""
					+ "")) {
   
				Hint.BLANK_OR_ENTER.print();
			} else {
   
				// 开始处理日期时间
				DateTimeTool.dateTimeFormatter(str);
			}
			Hint.HINT_STAR.print();
			System.out.println(Order.ORDER_EXIT.getname());
		}
	}

}

这里比较好的一点就是,在程序结束之前,会关闭扫描器,程序开始和程序结束,都会有提示语句:

请输入正确的时间,例如:
2020-01-10 10:10   2020.01.10 10:10   2020/01/10 10:10
退出请输入:[exit, 退出]

上面效果分别对应以下两行代码:

        // 程序开始提示语句
		Hint.HINT_STAR.print();
		// 程序退出提示语句
		System.out.println(Order.ORDER_EXIT.getname());

其中[exit, 退出]单独为第二行代码,与第一行代码效果拼接在一起,值得注意的是,Hint是一个枚举类,程序开始;运行期间和结尾的提示语句,都定义为枚举值,具体如下:

package hrkj;

/**
 * 日期时间类的提示语句,用于提示错误信息
 * 
 * @author 张林琛<br>
 * @date 2020/01/10 08:39:27
 * @version 1.0
 */

public enum Hint {
   
	/**
	 * 日期时间长度不合法
	 */
	LENGTH_ILLEGAL("日期时间长度不合法,"),
	/**
	 * 日期错误
	 */
	HINT_DATE("日期输入错误,"),
	/**
	 * 月份输入不合法
	 */
	HINT_MONTH("月份输入不合法,"),
	/**
	 * 大月只有31天
	 */
	HINT_BIGMONTH("大月只有31天,"),
	/**
	 * 小月只有30天
	 */
	HINT_TINYMONTH("小月只有30天,"),
	/**
	 * 平年2月只有28天
	 */
	HINT_TINY_TWOMONTH("平年二月只有28天,"),
	/**
	 * 闰年二月只有29天
	 */
	HINT_BIG_TWOMONTH("闰年二月只有28天,"),
	/**
	 * 时间错误
	 */
	HINT_TIME("时间输入错误,"),
	/**
	 * 输入空格或回车
	 */
	BLANK_OR_ENTER("不能输入空格或直接回车,"),
	/**
	 * 以空格分开日期和时间
	 */
	DATE_BLANK_TIME
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值