Java使用DateTimeFormatter格式化输入的日期时间

  

要求:
  

  

用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:02

     

3。考虑特殊情况下的日期:
  

  
  

比如当前天是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格式化输入的日期时间