今天看群里一哥们折腾得挺热乎,手痒随便写了一个DEMO,供初学者参考。

重点,写程序先定注释,明确思路后再写具体代码。

//星座定义
var constellations = [
{"Start":121,"End":220,"Name":"水平座"}, {"Start":221,"End":320,"Name":"双鱼座"},
{"Start":321,"End":420,"Name":"白羊座"}, {"Start":421,"End":520,"Name":"金牛座"},
{"Start":521,"End":620,"Name":"双子座"}, {"Start":621,"End":720,"Name":"巨蟹座"},
{"Start":721,"End":820,"Name":"狮子座"}, {"Start":821,"End":920,"Name":"处女座"},
{"Start":921,"End":1020,"Name":"天秤座"}, {"Start":1021,"End":1120,"Name":"天蝎座"},
{"Start":1121,"End":1220,"Name":"射手座"} ]; function WhatIsYourConstellation(y,m,d)
{
/*
判断日期有效性
1,3,5,7,8,10,12为31天
2月润年29,非润年28
4,6,9,11为30天
*/
var daysInMonth = [31,99,31,30,31,30,31,31,30,31,30,31]; //检测年份
if(y < 1970 || y > 2099) return "滚犊子1"; //检测月份
if(m < 1 || m > 12) return "滚犊子2"; //检测日期
var mDays = daysInMonth[m-1];
//如果是二月,要根据年份计算天数,不是二月时略过此计算
if(m == 2)
{
mDays = GetSpecialDays(y)
} //判断日数据是不是在月份的有效天范围
if(d < 0 || d > mDays) return "滚犊子3"; //好了,走到这一步,说明上面的验证都TM过了。
//这才判断是哪一个星座
//星座座标等于m*100 + d
var pos = m * 100 + d; for(var i in constellations)
{
if(pos >= constellations[i].Start && pos <= constellations[i].End)
{
return constellations[i].Name;
}
}
}
//根据年份计算二月天数
function GetSpecialDays(y)
{
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) return 29;
return 28;
}

调用DEMO

<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script src="xx.js"></script>
<div id="log"> </div>
<script>
function testCase(y,m,d)
{
var p = document.createElement("p");
p.style.color = "red";
p.style.fontSize = "14px";
var data = WhatIsYourConstellation(y,m,d);
p.innerText = y + "年" + m + "月" + d + "日的计算结果:" + data;
document.getElementById("log").appendChild(p);
} testCase(1800,1,1);
testCase(2000,-1,1);
testCase(2000,13,1);
testCase(2000,1,-1);
testCase(2000,1,32);
testCase(2000,2,32);
testCase(2000,2,29);
testCase(2001,2,29);
</script>

测试结果

Javascript计算星座的更多相关文章

  1. javascript计算两个时间差

    其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...

  2. javascript 计算文件MD5 浏览器 javascript读取文件内容

    原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...

  3. javascript计算字符串长度

    javascript计算字符串长度 学习了:https://blog.csdn.net/u012934325/article/details/75214847 function getByteLen( ...

  4. js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)

    本博客根据 开源中国作者清风徐不来 的文章 根据生日的月份和日期,一行代码计算星座的js小函数(转) 原文出自CSDN 无心的专栏 的文章,知识产权归原文作者所有! 点击查看原文:js 日期计算星座

  5. JavaScript实例技巧精选(12)—计算星座与属相

    >>点击这里下载完整html源码<< 这是截图: 核心代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- ...

  6. Javascript计算密码的强度

    用Javascript评估用户输入密码的强度 1.如果密码少于5位,那么就认为这是一个弱密码.2.如果密码只由数字.小写字母.大写字母或其它特殊符号当中的一种组成,则认为这是一个弱密码.3.如果密码由 ...

  7. javascript 计算两个日期的差值

    代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...

  8. 利用JavaScript计算引擎进行字符串公式运算

    1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...

  9. Javascript计算世界完全对称日

    今天是 2011-11-02 日,微博啊.G+啊什么的都传是世界完全对称日,还说是多少年一遇的.下面写个 JavaScript 小程序,看看是否真的N年一遇.计算范围在公元2000年到3000年. 名 ...

随机推荐

  1. Sublime Text 3安装清爽主题(著名的Soda Theme)

    Sublime Text是一款强大的编辑器,不但拥有众多强大的功能,还拥有很多漂亮的主题以及大量的插件可供配置使用. 本文主要描述Sublime Text 3安装清爽的主题,默认的深色主题Monoka ...

  2. PHPOffice下PHPWord生成Word2007(docx)使用方法

    要正常使用,下载依赖包: PhpOffice/Common:https://github.com/PHPOffice/Common Zend/Escaper:https://github.com/ze ...

  3. 【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!

    split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator],[limit])参数:stringObj   必选项.要被分解的 ...

  4. mui自定义事件带参返回mui.back()

    父页面添加自定义监听事件:(e.detail.xxx) window.addEventListener('doit', function(e){ //获取参数值 var imagePath = e.d ...

  5. 怎样用MathType创建竖式算法

    在使用MathType编辑公式时,有时将最简单的表达式变成Word文档也会出现一些问题.比如MathType竖式.下面介绍MathType竖式的一些编辑方法. 步骤如下: 步骤一:在MathType底 ...

  6. 帝国cms目录结构

    / 系统根目录├d/         附件和数据存放目录 (data) │├file/    附件存放目录 │├js/       JS调用生成目录 │└txt/        内容存文本存放目录 ├ ...

  7. mysql数据库,如何进行数据目录的初始化操作

    需求描述: 当将mysql的二进制包解压之后,只有通过初始化数据库的数据目录,创建系统表之后才能使用mysql Server 数据库版本:5.5.57-log 操作过程: 1.通过解压之后的mysql ...

  8. V4L2规范编程--21

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 资料链接:http://www.cnblogs.com/emouse/archive/2013/ ...

  9. [转]ASP.NET MVC 5– 使用Wijmo MVC 5模板1分钟创建应用

    开始使用 使用ComponentOne Studio for ASP.NET Wijmo制作MVC5应用程序,首先要做的是安装Studio for ASP.NET Wijmo . 测试环境 VS201 ...

  10. 京东云擎”本周四推出一键免费安装Discuz论坛

    “京东云擎”本周四推出一键免费安装Discuz论坛了,让用户能在1分钟之内建立自己的论坛.这是继上周云擎推出一键安装WordPress之后的又一重大免费贡献! 云擎: http://jae.jd.co ...