视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何通过日期计算星座
2020-11-27 19:34:08 责编:小采
文档


这篇文章主要介绍了关于通过日期计算星座,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

起始月份号数星座结束月份号数时间区间
1222摩羯座11912/22 - 1/19
120水瓶座2181/20 - 2/18
219双鱼座3202/19 - 3/20
321白羊座4203/22 - 4/20
421金牛座5204/22 - 5/20
521双子座6215/22 - 6/21
622巨蟹座7226/22 - 7/22
723狮子座8227/22 - 8/22
823处女座9228/22 - 9/22
923天秤座10229/22 - 10/22
1023天蝎座112110/22 - 11/21
1122射手座122111/22 - 12/21
1222摩羯座11912/22 - 1/19

一年12个月份
抽象一个数组

c = [摩羯,水瓶, 双鱼,白羊,金牛,双子,巨蟹,狮子,处女,天秤,天蝎,射手,摩羯]

c 为月份列表
该数组中序号为 1 的水瓶座对应的起始月份为 1月
序号为 起始月份 或者 (结束月份 - 1)
日期所对应的星座 起始月份为日期所在月 或者 终结月份为该月(即起始月份为日期所在月-1)
为了得出日期对应的星座,我们通过日期来计算对应星座的起始月份

startMonth = month - [(day < Date[month]) ? 1 : 0]
c = [摩羯,水瓶, 双鱼,白羊,金牛,双子,巨蟹,狮子,处女,天秤,天蝎,射手,摩羯]
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Date = [22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]

startMonth - 计算后对应星座的起始月份;
Month - 日期对应的月份;
day - 日期对应的号数;
Date - 月份列表对应的日期列表;

解释:
对应星座起始月份 = 当前月份 - [(当前日期是否小于对应月份的日期)是则为1,否则为0]
判断(日期对应号数 < 起始月份为日期对应月份的星座的起始号数)
例子 2月18日 为水瓶座 2月19日 为双子座
18 < 19 (19为2月的双鱼座的起始日期) 小于成立即 2 - 1 = 1 一月对应的星座为水瓶座
19 = 19 小于不成立, 2 - 0 = 2 所以为二月对应的星座 双鱼座

简化列表 将日期列表取消
day < Date[month] =》 day - x < Date[month] - x
令 y = Date[month] - x ,y需要为个位数
现在起始日期对应的号数 最小为19号(双鱼座) 最大为23号(狮子座)
穷举并且列出表格

xyx + y = 19xyx + y =23
109
149
118
158
127
167
136
176
145185
154194
163203
172212
181221
190230

两列中x的交集为 14 -19
取x = 14

Date = [22, 20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]

date - 14
最后列表为8,6,5,7,7,8,9,9,9,9,8,8 => '8657799988'

startMonth = month - [(day < Date[month]) ? 1 : 0]
=> month - (day - 14 < '8657799988'.charAt(month)) 
true 自动变为 1; 
true 自动变为 0; 
charAt为寻找字符串对应位置的str

最终代码

var date = new Date(2017,1,12);
//设置日期
function getHoroscope(date) {
 var c = ['摩羯','水瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手','摩羯']
 var month = date.getMonth() + 1;
 var day = date.getDate();
 var startMonth = month - (day - 14 < '8657799988'.charAt(month));
 return c[startMonth]
}
getHoroscope(date);
//水瓶

下载本文
显示全文
专题