JS帮你计算属相
/**
* 该方法只能正确判定到2099年
* @auther 黑MAO
* @time 2014年7月19日
*/
;(function(window){ /**
* 生肖构造函数,默认参数是当前日期
* @param {Number} year 年
* @param {Number} month 月
* @param {Number} day 日
*/
function Zodiac(year, month, day) {
var date = new Date();
this.year = year*1 || date.getFullYear();
this.month = month*1 || date.getMonth();
this.day = day*1 || date.getDate();
} Zodiac.constructor = Zodiac; /**
* 获取C值
* @return {Number} C
*/
Zodiac.prototype.getC = function(){
var _year = Math.floor(this.year/100)+1;
var C; switch(_year){
case 20:
C = 4.6295;
break;
case 21:
C = 3.87;
break;
case 22:
C = 4.15;
break;
default:
C = 3.87;
}
return C;
} /**
* 获取立春日 一般都在2月
* @return {Number} springDay
*/
Zodiac.prototype.getSpringDay = function(){
var Y = this.year%100,
D = 0.2422,
C = this.getC(),
L = (Y-1)/4,
springDay = 0;
springDay = Math.floor(Y*D+C)-Math.floor((Y-1)/4);
return springDay;
} /**
* 获取生肖
* @return {String} myZodiac
*/
Zodiac.prototype.getZodiac = function(){
var year = this.year,
month = this.month,
day = this.day,
zodiac = ['子鼠','丑牛','寅虎','卯兔','辰龙','巳蛇','午马','未羊','申猴','酉鸡','戌狗','亥猪'],
myPos = (year-1900)%12,
myZodiac = zodiac[myPos],
springDay = this.getSpringDay(); switch(month){
case 1:
var _myPos = myPos-1;
if(_myPos<0){
_myPos = 11;
}
myZodiac = zodiac[_myPos];
break;
case 2:
if(day < springDay){
var _myPos = myPos-1;
if(_myPos<0){
_myPos = 11;
}
myZodiac = zodiac[_myPos];
}
break;
}
return myZodiac;
} window.Zodiac = Zodiac;
})(window);
//默认参数是当前日期
var zodiac = new Zodiac();
//var zodiac = new Zodiac(1980, 2, 3);
//获取立春日
console.log(zodiac.getSpringDay());
//获取生肖
console.log(zodiac.getZodiac());
//可以与万年历进行比对
for(var year = 1900; year < 2100; year++) {
var zodiac = new Zodiac(year, 2, 4);
console.log(year, zodiac.getSpringDay(),zodiac.getZodiac());
}
JS帮你计算属相的更多相关文章
- js字符串长度计算(一个汉字==两个字符)和字符串截取
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...
- 在js脚本里计算多个小数的加法问题
当在js脚本里计算多个小数的加法时,算得的结果往往会自动取整,这时候我们就应该加入以下代码: function toDecimal(x) { var val = Number(x); if (!isN ...
- vue.js初探:计算属性和methods
在vue.js中,计算属性和methods方法的函数相同时,两者的最终执行结果都是相同的.然而不同的是,计算属性是基于它的依赖缓存.计算属性只有在它的相关依赖发生改变时才会重新取值.这就意味着只要 m ...
- Vue.js学习 Item5 -- 计算属性computed与$watch
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...
- js浮点数的计算
js在计算浮点数时可能不够准确,会产生舍入误差的问题,这是使用基于IEEE745数值的浮点计算的通病,并非ECMAScript一家,其他使用相同数值格式的语言也存在这个问题. 这里讲一 ...
- js 浮点小数计算精度问题 parseFloat 精度问题
在js中进行以元为单位进行金额计算时 使用parseFloat会产生精度问题 var price = 10.99; var quantity = 7; var needPay = parseFloat ...
- js中数字计算精度
其实同样的问题在java中也有存在,同样是浮点数的问题 问题这样的: 37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一 ...
- C#编程实践–帮老婆计算产假方案
摘要 今天中午午休时,和老婆聊天,老婆还过几天就要请产假了,她在网上问我让我帮她数一下该怎么请假最划算,老婆是个会过日子的人,面对此种要求我当然义不容辞,不过想到这个问题我的第一反应是:这个怎么可以用 ...
- js中角度计算
-. js 关于三角函数算法 弧度 和 角度的理解, 以及相互转换 角的两种单位 度 和 弧 1.弧度的定义 我们知道"度"的定义是,"两条射 ...
随机推荐
- 马士兵 Servlet_JSP(3) Servlet和JSP的通信(源代码)
(1)从JSP调用Servlet可用<jsp:forward>,请求信息自动转到Servlet FromJspToServlet.jsp <html> <body ...
- 传智播客 Html基础知识学习笔记2
一.<select>标签 用来创建类似于WinForm中的ComboBox(下拉列表)或者LisBox 如果size大于1就是LisBox,否则就是ComboBox; <select ...
- Spring 的优秀工具类盘点第 2 部分
特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题. ...
- 关于win8开发的一点小总结
我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...
- Visual Studio 2008项目中WinForm窗口图标显示为类图标,仅仅能打开代码而无法打开视图问题解决
背景: 今天打开一个Winform项目的时候.图标显示为类文件的样子而不是窗口的样子,在代码中右键也没有View Designer选项.双击图标打开的是代码而非窗口设计界面,百度后也没 ...
- WebSphere之wasprofile.sh使用
概要文件(profile) 6.0版本以后才有profile,目的是将用户数据和was本身的文件分开,这样可以定义多个profile,每个profile相当于一个用户,相当于提供了多用户的支持. pr ...
- 开源项目Material Calendar View 学习记录 (一)
开源项目Material Calendar View 学习记录 Github: https://github.com/prolificinteractive/material-calendarview ...
- C#holle world
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- UVA442 栈
C - Matrix Chain Multiplication Crawling in process... Crawling failed Time Limit:3000MS Memory ...
- 【译】神经网络与深度学习 Ch1-Section0
用神经网络识别手写数字 人类的视觉系统是是大自然的奇迹.考虑下面手写数字序列: 大多数人能够轻易地是识别出是504192.在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿 ...