html输入日期算出星座,通过日期计算星座

分析和理解根据日期计算星座函数

本博客根据文章 原文出自CSDN 的文章,知识产权归原文作者所有!

起始月份

号数

星座

结束月份

号数

时间区间

12

22

摩羯座

1

19

12/22 - 1/19

1

20

水瓶座

2

18

1/20 - 2/18

2

19

双鱼座

3

20

2/19 - 3/20

3

21

白羊座

4

20

3/22 - 4/20

4

21

金牛座

5

20

4/22 - 5/20

5

21

双子座

6

21

5/22 - 6/21

6

22

巨蟹座

7

22

6/22 - 7/22

7

23

狮子座

8

22

7/22 - 8/22

8

23

处女座

9

22

8/22 - 9/22

9

23

天秤座

10

22

9/22 - 10/22

10

23

天蝎座

11

21

10/22 - 11/21

11

22

射手座

12

21

11/22 - 12/21

12

22

摩羯座

1

19

12/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号(狮子座)

穷举并且列出表格

x

y

x + y = 19

x

y

x + y =23

10

9

14

9

11

8

15

8

12

7

16

7

13

6

17

6

14

5

18

5

15

4

19

4

16

3

20

3

17

2

21

2

18

1

22

1

19

0

23

0

两列中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 => '865778999988'

startMonth = month - [(day < Date[month]) ? 1 : 0]

=> month - (day - 14 < '865778999988'.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 < '865778999988'.charAt(month));

return c[startMonth]

}

getHoroscope(date);

//水瓶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解决这个问题。请问你需要输入的月份和日期是哪个国家或地区的日期格式? 如果是中国的日期格式,我可以给你一个简单的代码示例: ``` month = int(input("请输入您的出生月份:")) day = int(input("请输入您的出生日期:")) if month == 1 and day >= 20 or month == 2 and day <= 18: print("您的星座是水瓶座") elif month == 2 and day >= 19 or month == 3 and day <= 20: print("您的星座是双鱼座") elif month == 3 and day >= 21 or month == 4 and day <= 19: print("您的星座是白羊座") elif month == 4 and day >= 20 or month == 5 and day <= 20: print("您的星座是金牛座") elif month == 5 and day >= 21 or month == 6 and day <= 21: print("您的星座是双子座") elif month == 6 and day >= 22 or month == 7 and day <= 22: print("您的星座是巨蟹座") elif month == 7 and day >= 23 or month == 8 and day <= 22: print("您的星座是狮子座") elif month == 8 and day >= 23 or month == 9 and day <= 22: print("您的星座是处女座") elif month == 9 and day >= 23 or month == 10 and day <= 23: print("您的星座是天秤座") elif month == 10 and day >= 24 or month == 11 and day <= 22: print("您的星座是天蝎座") elif month == 11 and day >= 23 or month == 12 and day <= 21: print("您的星座是射手座") else: print("您的星座是摩羯座") ``` 这个代码示例可以根据输入的月份和日期计算出对应的星座,并输出结果。如果你有其他的日期格式,可以告诉我,我可以帮你改写对应的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值