在app中,展示个人信息时,有时候服务器只返回一个生日,然后要在个人信息里展示相应的星座名称和图标,这时候就需要客户端根据生日自己计算,那么怎么计算呢,方法很简单。

申明一个星座结构体,里面包含星座code,星座名字。

code用来标识一个星座,可以根据code来设置不同的星座图片,在需要国际化的时候根据code来展示相应的本地化字符串。

struct JPSConstellation {

///星座code

var code: Int

///星座名

var name: String

}

根据日期计算出星座

func constellationWith(date: Date) -> JPSConstellation? {

guard let calendar = NSCalendar(identifier: NSCalendar.Identifier.gregorian) else {

return nil

}

let components = calendar.components([.month, .day], from: date)

let month = components.month!

let day = components.day!

// 月以100倍之月作为一个数字计算出来

let mmdd = month * 100 + day;

var constellation: JPSConstellation?

if ((mmdd >= 321 && mmdd <= 331) ||

(mmdd >= 401 && mmdd <= 419)) {

constellation = JPSConstellation(code: 1, name: "白羊座")

} else if ((mmdd >= 420 && mmdd <= 430) ||

(mmdd >= 501 && mmdd <= 520)) {

constellation = JPSConstellation(code: 2, name: "金牛座")

} else if ((mmdd >= 521 && mmdd <= 531) ||

(mmdd >= 601 && mmdd <= 621)) {

constellation = JPSConstellation(code: 3, name: "双子座")

} else if ((mmdd >= 622 && mmdd <= 630) ||

(mmdd >= 701 && mmdd <= 722)) {

constellation = JPSConstellation(code: 4, name: "巨蟹座")

} else if ((mmdd >= 723 && mmdd <= 731) ||

(mmdd >= 801 && mmdd <= 822)) {

constellation = JPSConstellation(code: 5, name: "狮子座")

} else if ((mmdd >= 823 && mmdd <= 831) ||

(mmdd >= 901 && mmdd <= 922)) {

constellation = JPSConstellation(code: 6, name: "处女座")

} else if ((mmdd >= 923 && mmdd <= 930) ||

(mmdd >= 1001 && mmdd <= 1023)) {

constellation = JPSConstellation(code: 7, name: "天秤座")

} else if ((mmdd >= 1024 && mmdd <= 1031) ||

(mmdd >= 1101 && mmdd <= 1122)) {

constellation = JPSConstellation(code: 8, name: "天蝎座")

} else if ((mmdd >= 1123 && mmdd <= 1130) ||

(mmdd >= 1201 && mmdd <= 1221)) {

constellation = JPSConstellation(code: 9, name: "射手座")

} else if ((mmdd >= 1222 && mmdd <= 1231) ||

(mmdd >= 101 && mmdd <= 119)) {

constellation = JPSConstellation(code: 10, name: "摩羯座")

} else if ((mmdd >= 120 && mmdd <= 131) ||

(mmdd >= 201 && mmdd <= 218)) {

constellation = JPSConstellation(code: 11, name: "水瓶座")

} else if ((mmdd >= 219 && mmdd <= 229) ||

(mmdd >= 301 && mmdd <= 320)) {

//考虑到2月闰年有29天的

constellation = JPSConstellation(code: 12, name: "双鱼座")

}else{

print(mmdd)

print("日期错误")

constellation = nil

}

return constellation

}

最后可以打印验证一下

override func viewDidLoad() {

super.viewDidLoad()

let formatter = DateFormatter()

formatter.dateFormat = "yyyy/MM/dd"

let date = formatter.date(from: "1995/1/11")

let constellation = constellationWith(date: date!)

print(constellation?.name as Any)

}

输入日期得出星座c语言,根据日期计算星座相关推荐

  1. 计算机语言 时间,甲骨文将ISO日期到计算机的语言环境日期/时间

    我插入到一个Oracle数据库表使用下列插入字符串(约 - 有140列,所以我不会显示所有):甲骨文将ISO日期到计算机的语言环境日期/时间 "INSERT INTO AMS_ASSET_C ...

  2. java 计算星座算法,java 依据生日计算星座

    当前位置:我的异常网» 编程 » java 依据生日计算星座 java 依据生日计算星座 www.myexceptions.net  网友分享于:2013-09-06  浏览:344次 java 根据 ...

  3. html输入日期算出星座,java输入日期计算星座

    java输入日期计算星座 [2021-01-31 12:59:06]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

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

    分析和理解根据日期计算星座函数 本博客根据文章 原文出自CSDN 的文章,知识产权归原文作者所有! 起始月份 号数 星座 结束月份 号数 时间区间 12 22 摩羯座 1 19 12/22 - 1/1 ...

  5. c语言switch判断星座,通过日期计算星座 - osc_d41sfzmu的个人空间 - OSCHINA - 中文开源技术交流社区...

    分析和理解根据日期计算星座函数 起始月份 号数 星座 结束月份 号数 时间区间 12 22 摩羯座 1 19 12/22 - 1/19 1 20 水瓶座 2 18 1/20 - 2/18 2 19 双 ...

  6. c语言题目 生日 星座 出生石,C语言 提示用户输入生日,根据用户生日求得此人属于哪个星座,输出该星座的名称....

    满意答案 /*C语言 提示用户输入生日,根据用户生日求得此人属于哪个星座,输出该星座的名称. */ /*by Mr.Kong*/ #include main() { int m,d;/*定义m为月份, ...

  7. R语言-时间日期函数

    R语言时间日期函数 1. 返回当前日期时间,有两种方式: Sys.time() date() 举例 format(Sys.time(), "%a %b %d %X %Y %Z")# ...

  8. C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)

    C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下:  基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日 ...

  9. C语言根据日期判断星期几(使用基姆拉尔森计算公式)

    C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数 ...

  10. c语言根据日期求星期不用公式,...迅速算出是星期几的方法给你任何一年看日期怎么能...-知道日期怎么算周几-数学-倪滩贝同学...

    概述:本道作业题是倪滩贝同学的课后练习,分享的知识点是知道日期怎么算周几,指导老师为冉老师,涉及到的知识点涵盖:...迅速算出是星期几的方法给你任何一年看日期怎么能...-知道日期怎么算周几-数学,下 ...

最新文章

  1. 私钥设置_私钥忘了怎么办,还能找回来吗?能
  2. STL库中string类内存布局的探究
  3. 连接SQL Server文件集锦
  4. 这些是实际面试中遇到的面试题
  5. 基金大跌,基民上闲鱼“卖货回血”了!支付宝深夜发文!真的没人买基了?...
  6. 习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994, UVa232)
  7. Github博客私人订制(一)
  8. 一张纸厚度是多少毫米_科学有意思 |一张纸对折,最多只能折9次?不信你试一试...
  9. paip.程序设计--扫号器跑号器结果分类设计
  10. Eclipse主题切换
  11. 计算机系统基础学习报告(一)
  12. Centos安装交叉编译工具链
  13. TCP/IP基础知识
  14. 英特尔服务器主板g41性能,英特尔g41显卡好用吗 英特尔g41显卡评测【详解】
  15. android 如何进入安全模式,手机怎么进入安全模式
  16. Error: This attribute must be localized. 解决方法
  17. 幽门螺旋杆菌反反复复,该怎么办?
  18. 去哪儿2017校园招聘 开发工程师(第二批次)- 题解
  19. “TECH数字中国 2020技术年会”盛大开幕!产学研生态共议“新基建 新金融 新安全”
  20. 炒鸡蛋的制作.简简单单炒鸡蛋,吃了都说好

热门文章

  1. 2000坐标系xy坐标几位_2000国家大地坐标系简介
  2. [Redis]Redis客户端
  3. ios visio流程图_Mac下有如Visio一样好用的流程图软件吗?
  4. flutter之dart语言发展
  5. CRC冗余校验的真正原理之模2除法
  6. 自己动手写一个分库分表中间件(一)
  7. ffmpeg 将视频转换为图片
  8. SLAM专题(8)卡尔曼滤波和扩展卡尔曼滤波 原理与应用
  9. 常用编码说明-GB2312
  10. springboot接收前端的数组_SpringBoot如何接收数组参数的方法