程序设计就跟我们平时头脑想的是一样的[如何按生日的年月日计算年龄(周岁)]
来源:互联网 发布:8月份上海房产成交数据 编辑:程序博客网 时间:2024/05/01 00:29
程序设计就跟我们平时头脑想的是一样的,只需要解读我们平常是怎样按顺序进行计算的,然后转换成程序语句就可以了,所以设计程序不是压力很大。下面打个比方:如何按生日的年月日计算年龄(周岁)
我们头脑是怎样计算和判断的呢,如果我们就像放慢动作一样仔细解读每一步计算动作,可得:1、计算年差,2、计算月差,3、计算日差,如果愿意我们还可以计算时分差,也就是说我们实际上是把时间分开的,这样我们就得到首先要写的程序语句是:
int 实岁 = 预测日期.Year - 生日.Year, 月差 = 预测日期.Month - 生日.Month, 日差 = 预测日期.Day - 生日.Day, 时差 = 预测日期.Hour - 生日.Hour, 分差 = 预测日期.Minute - 生日.Minute;
接着我们怎样进行计算及逻辑是怎样的呢,就跟我们平常脑子中的计算步骤和逻辑是一样的,我们首先计算的是从出生的年到计算的年之间的差值,于是写程序语句:
实岁 = 预测日期.Year - 生日.Year,
紧接着计算和判断出生月到计算月的差值,如果计算月未到出生月则实岁应-1岁,于是写程序语句:
if (月差 < 0) { 实岁--; },
跟我们平时头脑计算一样,如果月等于或大于就不-1岁;
紧接着计算和判断出生月中的日差值,如果月相等那么计算日是否相等或大于,于是写程序语句:
if (月差 == 0 && 日差 < 0) { 实岁--; }
这里面条件的设定还包含了假设超过出生月则日子不需计算;
一般写到这里就足够了,不过事物总是在不断变化和演进的,或许某些需要计算时分差,那么,计算和判断怎么写呢?其实顺序和逻辑是一样的,不过有时候心不细分析也会产生逻辑上的错误,比如直接就判断时分差值:
if (日差 == 0 && 时差 < 0) { 实岁--; } if (日差 == 0 && 时差 == 0 && 分差 < 0) { 实岁--; }
这样写是不正确的,为什么呢?因为每月中都有此日、此时、此分,正确应该加上:月差 == 0 && 这样的判断;
之所以强调这点就是因为有时候写程序语句不细心分析会犯逻辑上的错误,而造成疑惑、困顿、烦恼,其实,只要细心分析就能发现问题。
于是我们得到下面正确的程序语句集合:
private int 实岁(DateTime 生日, DateTime 预测日期) { int 实岁 = 预测日期.Year - 生日.Year, 月差 = 预测日期.Month - 生日.Month, 日差 = 预测日期.Day - 生日.Day, 时差 = 预测日期.Hour - 生日.Hour, 分差 = 预测日期.Minute - 生日.Minute; if (月差 < 0) { 实岁--; } if (月差 == 0 && 日差 < 0) { 实岁--; } if (月差 == 0 && 日差 == 0 && 时差 < 0) { 实岁--; } if (月差 == 0 && 日差 == 0 && 时差 == 0 && 分差 < 0) { 实岁--; } return 实岁; }
调用:
int 岁数 = 实岁("1965-4-14 0:00:00", "2012-5-25 9:25:25");
以上我们发现可以归纳雷同的语句,如把多处的月差 == 0做个归纳,就可以改成如下:
if (月差 == 0){ if(日差 < 0) { 实岁--; } if (日差 == 0 && 时差 < 0) { 实岁--; } if (日差 == 0 && 时差 == 0 && 分差 < 0) { 实岁--; }}
这样逻辑和语句看起来是不是很舒服!再归纳就不赘述了;这样写起程序来就跟我们平时的思路习惯很接近,会觉得很通顺、流畅、随心所欲,所以,写程序压力不是很大的。
当然每个人的思维逻辑有不同,另一种思维是这样的:
依据思维逻辑习惯直接写:
if (月差 == 0)
{
......
}
而我则习惯于先写好再归纳,比较轻松和顺着自己思维,不会搅乱脑筋,呵呵。。。。。,今天凭着思路就写了这些,知道写得不好,看了莫笑。
- 程序设计就跟我们平时头脑想的是一样的[如何按生日的年月日计算年龄(周岁)]
- PHP根据生日计算年龄(周岁)
- js根据生日计算周岁 以及Date的相关用法
- php根据生日计算年龄的方法
- 写在我的22周岁生日时
- C# 根据出生日期(年月日)计算年龄的代码
- 就像我们的青春一样
- PHP按照生日日期计算当前的实际年龄
- php几种根据生日计算年龄的方法
- iOS 计算生日转化为年龄的方法
- 我们平时是怎么写html和css的?
- 我们的生日花
- 写于35周岁生日的前三天
- 年龄的计算
- java-根据生日计算周岁
- 我们都是一样的
- 今天是你的生日,你就快乐些吧
- 2006-10-12 我跟她们是一样的呀~
- Struts2慢慢学之一
- java例程练习(转换流)
- 我的OpenCV学习笔记(13):计算直方图,利用查找表拉伸直方图,直方图均衡
- 点击tomcat出现 unable to open service tomcat
- adb shell dumpsys 命令
- 程序设计就跟我们平时头脑想的是一样的[如何按生日的年月日计算年龄(周岁)]
- 基础服务开发实例
- USACO Stringsobits, 还是得搬出动态规划来
- 笔试面试中C/C++重要知识点整理(不定期更新)
- 将整形转化为二进制存放着数组中
- 素数判定
- 分享我用Qt写的游戏组队群聊系统
- ActionServlet类未找到
- JDBC的支持——DataSource的配置