要求:
用DateTimeFormatter实现:用扫描器获取输入的时间(年月日时分),这个时间的格式是常用的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输入时间。格式化的时间参考企业微信聊天记录的展示时间
分析:
1。时间的常用格式为:
xxxx-xx-xx xx: xx
引用>
xxxx/xx/xx xx: xx
xxxx.xx。xx xx: xx
等格式2。微信显式时间格式为:
今天显式:00:01 - 23:59。
引用>
昨天显式:昨天01:01;
前天显式:周几02:02
往前推一周都显式:周几02:02;
时间再往前推只显示:几月几日02:02
不同年则显式:几年几月几日02:02
也可考虑写一个明天显式:明天02:02
其余时间显式:几月几日02:023。考虑特殊情况下的日期:
比如当前天是1号
引用>
则上个月的最后一天是昨天
往前推一周则显式:星期几02:02
如果当前天不大于7号
则向前推一周到了上个月
也要考虑将其转换为星期4。先输入一个时间,再对这个时间使用DateTimeFormatter进行格式化
比如:
引用>
输入:2020-1-11 12:22
则格式化结果为:
下午12:22
程序开始:
包hrkj.chapter7.dateTimeFormatter.Test1;/* * *程序开始入口& lt; br> * 2020年1月9日下午7:10:04 * * @author wcf * @version 1.0 */公共类测试{/* * *程序入口 * * @param args入口参数 */公共静态void main (String [] args) {//程序开始运行 DateTimeFormatterTest.inoutDateTime (); } } >之前日期时间等需要用到的正则表达式:
包hrkj.chapter7.dateTimeFormatter.Test1;/* * *日期时间的正则表达式& lt; br> * 2020年1月9日下午7:25:11 * * @author wcf * @version 1.0 */公共enum Regex {/* * *匹配闰年 */LEEP_YEAR (((\ \ d{2}(0[48] |[2468][048] |[13579][26])) |((0[48] |[2468][048] |[13579][26]) 00))[- \ \/\ \] 0 & # 63; 2[- \ \/\ \] 29日”),/* * *匹配平年 */COMMON_YEAR ((\ \ d {3} (1 - 9) | \ \ d {2} \ \ [1 - 9] d | \ \ [1 - 9] \ \ d {2} | (1 - 9) \ \ d {3}) [- \ \/\ \] ((0 & # 63; [13578] | 1 [02]) [- \ \/\ \] (0 & # 63; (1 - 9) | [12] \ \ d | 3 [01]) | ((0 & # 63; [469] | 11) [- \ \/\ \] (0 & # 63; (1 - 9) | | 30) [12] \ \ d) | (0 & # 63; 2 [- \ \/\ \] (0 & # 63; (1 - 9) | 1 | \ \ d 2(主))))”),/* * *匹配时间 */时间(”([01]& # 63;\ \ d | 2 [0 - 3]): (0 - 5) & # 63; \ \ d”),/* * *退出程序 */退出(退出|退出”);/* * *正则 */私人最终字符串str;/* * *有参构造器 * * @param弦正则 */私人正则表达式字符串(String) { 这一点。str=字符串; }/* * *获取正则 * * @return正则 */公共字符串getStr () { 返回str; } } >之前提示信息:
包hrkj.chapter7.dateTimeFormatter.Test1;/* * *提示信息& lt; br> * 2020年1月9日下午7:25:53 * * @author wcf * @version 1.0 */公共enum提示{/* * *请输入日期时间 */INPUT_DATE_TIME(“请输入日期时间:“),/* * *日期时间格式 */DATETIMEFORMAT(“常用格式:xxxx-xx-xx xx: xx \ n \ t xxxx/xx/xx xx: xx \ n \ t xxxx.xx。xx xx: xx”),/* * *日期错误 */INVOKE_DATE(“日期错误”),/* * *时间错误 */INVOKE_TIME(“时间错误”),/* * *日期时间错误 */INVOKE_DATE_TIME(“日期时间错误!”),/* * *继续或退出 */CONTINUE_OR_QUIT(“退出:程序退出\ n请输入:“),/* * *程序结束 */END_OF_PROGRAM(“退出成功,程序结束!”);/* * *提示 */私人最终字符串str;/* * *有参构造器 * * @param str提示 */私人提示(String str) { 这一点。str=str; }/* * *获取提示 */公共空间println () { System.out.println (str); } } >之前Java使用DateTimeFormatter格式化输入的日期时间