Javascript计算星座
今天看群里一哥们折腾得挺热乎,手痒随便写了一个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计算星座的更多相关文章
- javascript计算两个时间差
其实,javascript计算时间差的方式非常简单,如果是默认的Date()类型,直接相减就是相差的毫秒数. var d1 = new Date('2016/03/28 10:17:22'); var ...
- javascript 计算文件MD5 浏览器 javascript读取文件内容
原则上说,浏览器是一个不安全的环境.早期浏览器的内容是静态的,用户上网冲浪,一般就是拉取网页查看.后来,随着互联网的发展,浏览器提供了非常丰富的用户交互功能.从早期的表单交互,到现在的websocke ...
- javascript计算字符串长度
javascript计算字符串长度 学习了:https://blog.csdn.net/u012934325/article/details/75214847 function getByteLen( ...
- js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)
本博客根据 开源中国作者清风徐不来 的文章 根据生日的月份和日期,一行代码计算星座的js小函数(转) 原文出自CSDN 无心的专栏 的文章,知识产权归原文作者所有! 点击查看原文:js 日期计算星座
- JavaScript实例技巧精选(12)—计算星座与属相
>>点击这里下载完整html源码<< 这是截图: 核心代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- ...
- Javascript计算密码的强度
用Javascript评估用户输入密码的强度 1.如果密码少于5位,那么就认为这是一个弱密码.2.如果密码只由数字.小写字母.大写字母或其它特殊符号当中的一种组成,则认为这是一个弱密码.3.如果密码由 ...
- javascript 计算两个日期的差值
代码 Typescript版 /** * TimeSpan just like the class TimpSpan in C# ,represent the time difference * @c ...
- 利用JavaScript计算引擎进行字符串公式运算
1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...
- Javascript计算世界完全对称日
今天是 2011-11-02 日,微博啊.G+啊什么的都传是世界完全对称日,还说是多少年一遇的.下面写个 JavaScript 小程序,看看是否真的N年一遇.计算范围在公元2000年到3000年. 名 ...
随机推荐
- e681. 基本的打印程序
Note that (0, 0) of the Graphics object is at the top-left of the actual page, outside the printable ...
- java---final、finally、finalize的区别
Java finalize方法使用 标签: javaappletobjectwizardjvm工作 2011-08-21 11:37 48403人阅读 评论(5) 收藏 举报 分类: Java(96 ...
- 《C++ Without Fear》 第1章 第一个C++程序
机器码,CPU的“母语”,每条计算机指令就是一个由1和0构成的独一无二的组合(或代码). endl是“endl line”的缩写,所以它应该念作“end ELL”而不是“end ONE”.
- NPOI帮助类(Excel转DataTable、DataTable转Excel)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...
- POI-根据Cell获取对应的String类型值
/** * 根据不同情况获取Java类型值 * <ul><li>空白类型<ul><li>返回空字符串</li></ul>< ...
- Jmeter零起点学习
什么是JMeter Apache JMeter是一个开源的Java桌面软件.设计的目的就是进行C/S架构软件的负载测试.随着发展,有很多人也用来进行一些静态资源或者动态资源的性能测试.可以支持的测 ...
- Visual Studio各版本一览!
上图红线标识处为常用版本,最经典的是VC++ 6.0,专为早期C++开发设计.红框标识处是其内部版本,如VS2008,其内部版本为vc9.0,注意查找区分! 目前,最新版本的VS2017已经发布,很大 ...
- consul读取key value
1.nuget 搜索consul安装 2. using (var client = new ConsulClient()) { var kvPair = client.KV.Get(key).Resu ...
- oracle数据备份
from:http://www.docin.com/p-728428621.html
- 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之LayerColor(8)
在前面文章中讲述了Cocos2d-x引擎OpenGL渲染准备Shader方面,本文主要讲解使用LayerColor来讲述OpenGL的渲染过程. 1.LayerColor对象创建 添加LayerCol ...