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年. 名 ...
随机推荐
- 多媒体开发之h264的三种字节流格式---annexb 哥伦布/mp4 以及还有一种rtp传输流格式
------------------------------------author:pkf ------------------------------------------time:2015-1 ...
- sqlldr导入数据(以PostgreSql>>>Oracle为例)
1.在目标数据库中创建表 1.1点击源表,复制创建语句 1.2 修改数据类型以匹配目标数据库,如: 字符串类型:character varying(20)>>>varchar2(20 ...
- 如何使用matlab中的胞元数组
胞元数组(cell Arry)的基本组分是胞元(cell),每个胞元本身在数组中是平等的,只能以下标区分.胞元可以存放任何类型.任何大小的数组,如任意维数值数组.字符串数组.符号对象等,而且同一个胞元 ...
- Supervisor安装与配置(非守护进程管理工具)
http://blog.csdn.net/xyang81/article/details/51555473
- HTML的设计与应用
<html> <head><!-- 设置网页头标题--> <!-- 不需要在页面中显示的内容写在这个里面 --> <base href=" ...
- Java fluent风格
写个简单的例子,相信看了下面的例子,就会了解什么是fluent风格. 一.我们先写一个通常的,即不使用fluent风格 1.实体类 package com.xbq.demo.stu; /** * @C ...
- java.lang.IncompatibleClassChangeError: Implementing class
项目中使用了quartz,但是jar包却有两个,一个1.8版本,一个2.1版本,导致jar包冲突,所以导致一启动tomcat就出现: Caused by: java.lang.Incompatible ...
- Unity中Oculus分屏相机和普通相机一键切换
Unity中Oculus分屏相机和普通相机一键切换 一.OCulus 分屏相机介绍 在VR开发工程中,总会觉得OC分屏的处理太慢,严重浪费时间啊! 但是不使用有不好调试,来回切换相机就成为了一个必须. ...
- linux上如何快速删除一个目录
在linux中删除一个目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可解决.直接rm就可以了,不过要加两个参数-rf 即:rm -rf ...
- 【Mysql】 case ... when ... 用法
sql语句查询时给某个空字段赋值 SELECT CASE WHEN field= '' THEN ' WHEN fieldIS NULL THEN ' ELSE field END FROM tabl ...