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