文章目录

  • 计算纪念日
  • 测试:
  • java代码

计算纪念日

前言:某一天小白问大白我们结婚多久了,大白思索良久,拿出日历看了看,说到估计xxx天了吧,这时只见天空顿时灰暗(大白暗叫不好),一个巴掌最终还是拍响了。。。。。

分享一个自己耍朋友的时候用的纪念日计算工具案例吧。

测试:

java代码

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;public class Live {//控制台输入流private Scanner cin = new Scanner(System.in);public static void main(String[] args) throws ParseException {Live l = new Live();String time = l.infoStringDate();while (!l.isDate(time)) {time = l.reInfoStringDate();}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(time);Calendar calendar = Calendar.getInstance();calendar.setTime(date);int miss = l.infoMiss();while (miss != -1) {show(calendar, miss, date);calendar.setTime(date);miss = l.infoMiss();}System.out.println("欢迎下次使用");}/*** 显示计算结果* @param calendar* @param miss* @param date*/public static void show(Calendar calendar, int miss, Date date) {SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd EE");calendar.add(Calendar.DATE, miss);date = calendar.getTime();System.out.println("请注意你们的" + miss + "天的纪念日是:" + sdf1.format(date));}public int infoMiss() {System.out.println("输入特殊纪念时间(如:520,输入-1结束)");return cin.nextInt();}/*** 检查输入的时间是否满足格式要求* @param date 时间字符串* @return 是否满足要求*/public boolean isDate(String date) {// 第一格式检查boolean ok = date.matches("[1-9]{1}[0-9]{3}-(0[1-9]{1}|1[1-2]{1}|10)-[0-3]{1}[0-9]{1}");// 第二日期校验String[] data = date.split("[-/.+]");ok = ok && isMonthAndDay(date);return ok;}private boolean isMonthAndDay( String date ) {String[] data = date.split("[-/.+]");String month=data[1], day = data[2];boolean ok = true;//二月if (month.matches("0[2]||2")) {if(isRunYear(Integer.parseInt(data[0]))) {// 闰年if (!day.matches("0[1-9]||[1-9]||1[0-9]||2[0-9]")) {ok = false;}}else {// 非闰年if (!day.matches("0[1-9]||[1-9]||1[0-9]||2[0-8]")) {ok = false;}}} else {// 2月份以外的大小月 【1大2小3大xxxx】if (month.matches("0[13578]||[13578]||1[02]")) {//大月if (!day.matches("0[1-9]||[1-9]||[12][0-9]||3[01]")) {ok = false;// 天数不对}} else if (month.matches("0[469]||[469]||11")) {//小月if (!day.matches("0[1-9]||[1-9]||[12][0-9]||30")) {ok = false; // 天数不对}}}return ok;}public boolean isRunYear(int year) {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 是闰年return true;} else {return false;}}/*** 输入初始时间,已字符串的格式输入* @return 返回输入的字符串格式*/public String infoStringDate() {System.out.println("请输入爱情开始的时间:格式(2016-01-07)");return cin.nextLine();}public String reInfoStringDate() {System.out.println("输入时间不符合要求,请按要求重新输入(格式:2016-01-07)");return cin.nextLine();}
}

代码未经专业测试,望指教。
畅想:集成一个短信,或者邮件提醒的服务,对用户指定特殊纪念日发送短信提醒(做大做强-)。

分享11:老婆问你各种纪念日相关推荐

  1. 还在担心图片的版权吗?分享11个无版权、高清、免费图片素材网站给你!

    有时候,我们在寻找图片素材的时候,经常会考虑是否无侵权,到底有没有版权限制,图片质量如何的问题?接下来,干货君分享11个可用于商业用途的无版权图片免费下载网站(文末有获取方式). 1.unsplash ...

  2. 分享 11 个常用的 Nginx 性能优化参数工作

    编辑:业余草 来源:https://www.xttblog.com/?p=4957 分享 11 个常用的 Nginx 性能优化参数教程 工作上,需要配置 Nginx,要投入生产使用,做了一点优化工作, ...

  3. 今天是我和老婆结婚一周年纪念日。

    2007.6.6 ,今天是我和老婆结婚一周年纪念日,值得庆贺的日子.我爱老婆!

  4. ThreadLocal 面试夺命11连问

    前言 前一段时间,有同事使用ThreadLocal踩坑了,正好引起了我的兴趣. 所以近期,我抽空把ThreadLocal的源码再研究了一下,越看越有意思,发现里面的东西还真不少. 我把精华浓缩了一下, ...

  5. 分享11款主流的开源编程工具

    导读:有了开源编程工具,在基于开源许可证的情况下您可以轻松学习.修改.提高代码的质量,本文收集了11款最主流的且有价值的开源编程工具.或许会给您带来一丝惊喜.一起来看下吧. NO.1 Rhomobil ...

  6. linux 终端 分享,11个实用的Linux终端命令总结分享

    1. 如下的快捷方式非常有用,能够极大的提升你的工作效率: CTRL + U – 剪切光标前的内容 CTRL + K – 剪切光标至行末的内容 CTRL + Y – 粘贴 CTRL + E – 移动光 ...

  7. 蓝懿ios 技术内容和心得交流分享 11.3 打飞机主要步骤

    今天又到了练习日   今天大家都在做昨天的一个有多个界面的打飞机游戏,基本把所有讲过的内容都涵盖到了,一个项目基本上做了一整天,把步骤一步步分解开来,条理非常清晰,讲的也深入浅出,大家基本上都能够领会 ...

  8. 蓝懿ios 技术内容和心得交流分享 11.2 打飞机主要步骤

    今天新的内容并没有讲的特别多,老师带着大家做了一个有多个界面的打飞机游戏,基本把所有讲过的内容都涵盖到了,一个项目基本上讲了一整天,把步骤一步步分解开来,条理非常清晰,讲的也深入浅出,大家基本上都能够 ...

  9. AIGC时代,分享11款超实用AI生成内容检测工具

    前往未来百科查看全部AI内容检测工具箱 一.AI 内容检测器 在数字内容创作的世界中,高质量的内容对至关重要.但随着创建的内容量不断增加,确保内容是原创的.高质量的非常具有挑战性. AI 内容检测器指 ...

最新文章

  1. 一些powershell基本使用示例
  2. OpenGL camera相机的实例
  3. CodeForces - 1198A MP3(尺取)
  4. 顶级Linux发行版(10)——Gentoo Linux [转]
  5. 【软工项目组】第十八次会议
  6. 【语音隐写】基于matlab LSB语音隐藏【含Matlab源码 431期】
  7. 基于stm32单片机外文文献_单片机STM32外文文献翻译、中英文翻译
  8. 无法定位程序输入点dxgiget_无法定位程序输入点于动态链接库dxgi.dll上怎么解决?-51dll帮助...
  9. 优点家庭服务器修改wifi,家庭联网三种方式---不看后悔! - 【 网络基础 】 - 我是网管论坛 - 畅通网络 因......
  10. 双系统安装 Ubuntu 18.04 以及删除双系统中的 Ubuntu 的方法
  11. *TEST 7 for NOIP 玄学解题 (150/300)
  12. 一WAN多拨(一号多拨)实验
  13. 下列哪个不是python的第三方库_以下选项中,不是 Python 中用于开发用户界面的第三方库是()...
  14. 第二章:简单古典密码(及其五元组)
  15. 菜单导航间竖杠竖线间隔符 | 效果的CSS实现
  16. TCP UDP之网络编程及数据库入门
  17. JavaScript相关笔记及案例
  18. java集成开发环境的搭建
  19. 变分自编码器原理详解
  20. bat文件执行多条Linux命令,Js使用WScript.Shell对象执行.bat文件和cmd命令

热门文章

  1. JavaSE-多线程基础-基于多线程的计时器应用
  2. 支付宝内部人士是这样设密码的!太牛逼了!
  3. CTSC1999/wiki1034 家园 题解 网络流+相对论
  4. 神经网络编译器TVM
  5. 特征工程之数据预处理——哑变量处理
  6. Redis 性能优化 —— 关闭 THP
  7. 卸载Oracle11g的方法
  8. Ansys仿真TDR
  9. 浅谈电气设备的绝缘在线监测与状态维修探究
  10. 爬虫之哔哩哔哩女神篇