IOS 获取农历方法(转)

声明:以下为使用iOS的 NSChineseCalendar 网上之前发现有人说这个方法不是完全准确,有些日期会显示的不对,本人没有验证过,也实在懒得用C++那套方法去实现。

 

另外我做的不过是个简单的功能,还不包括什么节气 节日那些复杂有高端的功能,如果哪位大神不吝赐教 小弟在此感激了。

 

方法总的说来就这样: 

 

 1 +(NSString*)getChineseCalendarWithDate:(NSDate *)date{  
 2 
 3   
 4 
 5     NSArray *chineseYears = [NSArray arrayWithObjects:  
 6 
 7                        @"甲子", @"乙丑", @"丙寅", @"丁卯",  @"戊辰",  @"己巳",  @"庚午",  @"辛未",  @"壬申",  @"癸酉",  
 8 
 9                        @"甲戌",   @"乙亥",  @"丙子",  @"丁丑", @"戊寅",   @"己卯",  @"庚辰",  @"辛己",  @"壬午",  @"癸未",  
10 
11                        @"甲申",   @"乙酉",  @"丙戌",  @"丁亥",  @"戊子",  @"己丑",  @"庚寅",  @"辛卯",  @"壬辰",  @"癸巳",  
12 
13                        @"甲午",   @"乙未",  @"丙申",  @"丁酉",  @"戊戌",  @"己亥",  @"庚子",  @"辛丑",  @"壬寅",  @"癸丑",  
14 
15                        @"甲辰",   @"乙巳",  @"丙午",  @"丁未",  @"戊申",  @"己酉",  @"庚戌",  @"辛亥",  @"壬子",  @"癸丑",  
16 
17                        @"甲寅",   @"乙卯",  @"丙辰",  @"丁巳",  @"戊午",  @"己未",  @"庚申",  @"辛酉",  @"壬戌",  @"癸亥", nil];  
18 
19       
20 
21     NSArray *chineseMonths=[NSArray arrayWithObjects:  
22 
23                         @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",   
24 
25                         @"九月", @"十月", @"冬月", @"腊月", nil];  
26 
27       
28 
29       
30 
31     NSArray *chineseDays=[NSArray arrayWithObjects:  
32 
33                       @"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",   
34 
35                       @"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",  
36 
37                       @"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十",  nil];  
38 
43     NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];  
44 
45       
46 
47     unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;  
48 
49   
50 
51     NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];  
52 
53       
54 
55     NSLog(@"%d_%d_%d  %@",localeComp.year,localeComp.month,localeComp.day, localeComp.date);  
56 
57       
58 
59     NSString *y_str = [chineseYears objectAtIndex:localeComp.year-1];  
60 
61     NSString *m_str = [chineseMonths objectAtIndex:localeComp.month-1];  
62 
63     NSString *d_str = [chineseDays objectAtIndex:localeComp.day-1];  
64 
65   
66 
67     NSString *chineseCal_str =[NSString stringWithFormat: @"%@_%@_%@",y_str,m_str,d_str];  
68 
69       
70 
71     [localeCalendar release];  
72 
73       
74 
75     return chineseCal_str;  
76 
77 }  

 

如果需要也可以拆成单独的函数来方便获取,例如获取月份:

 1 +(NSString*)getChineseMonthWithDate:(NSDate *)date{  
 2 
 3       
 4 
 5     NSArray *chineseMonths=[NSArray arrayWithObjects:  
 6 
 7                             @"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",   
 8 
 9                             @"九月", @"十月", @"冬月", @"腊月", nil];  
10 
11       
12 
13       
14 
15     NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];  
16 
17       
18 
19     unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;  
20 
21       
22 
23     NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];  
24 
25       
26 
27     //NSLog(@"%d_%d_%d  %@",localeComp.year,localeComp.month,localeComp.day, localeComp.date);  
28 
29   
30 
31     NSString *m_str = [chineseMonths objectAtIndex:localeComp.month-1];  
32 
33       
34 
35     [localeCalendar release];  
36 
37       
38 
39     return m_str;  
40 
41   
42 
43 }  

 

 

 另外如果不知道如何获取NSDate 那么额外加个方法用来根据string和format来得到对应的 NSDate:

 1 +(NSDate *)getDateWithDateString:(NSString *)strDate formatString:(NSString*)strFormat{  
 2 
 3       
 4 
 5     NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];   
 6 
 7       
 8 
 9     NSTimeZone *timeZone =  [NSTimeZone timeZoneWithAbbreviation:@"GMT"];   
10 
11       
12 
13     //NSTimeZone *localTime = [NSTimeZone localTimeZone];    
14 
15       
16 
17     [formatter setTimeZone:timeZone];    
18 
19     [formatter setDateFormat : strFormat];        
20 
21       
22 
23     NSDate *dateTime = [formatter dateFromString:strDate];  
24 
25       
26 
27     return dateTime;  
28 
29 }  

 

使用方法类似这样,比如获取世界末日那一时刻的Date~~~

 

1 NSDate *date = [Tool_Functions getDateWithDateString:@"2012-12-21 15:14:35"   
2 
3                                             formatString:@"yyyy-MM-dd HH:mm:ss"];  

 

 

转载文章,原文点击

转载于:https://www.cnblogs.com/tig666666/p/6603490.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI初创公司都去哪了?2019年科技公司“五巨头”收购盘点

大数据文摘出品来源:venturebeat人工智能人才的争夺大战愈演愈烈。 今年,Pinterest的首席技术官Vanja Josifovski离职加入了Airbnb,而Pinterest则聘请了沃尔玛的首席技术官Jeremy King来领导工程团队。此外,包括谷歌和苹果在内的所…

angular element()

使用angular.element()获取一个dom的方法。 1.可以使用jquery的选择器 2.可以使用javascript的原生查找元素的方法 下面是angular.element()提供的方法 <input type"checkbox" class"input" /><input type"text" class"input1&quo…

电脑连接android手机测试,关于如何将手机画面投屏到PC的测试(Android)

如何将手机画面投屏到PC上并进行控制呢?为什么要投屏一边LOL ,一边朋友圈?办公呢? 我手机插上充电就好,电脑上刷刷手机呢?哈哈准备工具下载工具如何使用无线使用写在最后后续为什么要投屏我最近买了个带鱼屏, 屏幕长到用不完的地步了. 总想折腾折腾看看还能玩出来什么花样手…

【前沿科技】看完这篇文章前,你绝对想象不到欧美航空机器人竟然发展到这个程度了!...

来源&#xff1a;中国机器人网《工程》杂志撰文认为&#xff0c;工业机器人在许多行业中已经建立了良好的基础&#xff0c;并且通常与现代化的先进制造系统相关联&#xff0c;但是&#xff0c;航空制造仍然严重依赖熟练的手工作业。航空制造中采用机器人的一个主要障碍是缺乏精…

beautifulsoup网页爬虫解析_Python爬虫快速入门,静态网页爬取

在开始之前&#xff0c;请确保你的电脑上已经安装好了BeautifulSoup库&#xff0c;可以通过在命令行中输入pip install beautifulsoup4来进行安装。一、数据解析在爬取之前&#xff0c;我们需要检测下响应状态码是否为200&#xff0c;如果请求失败&#xff0c;我们将爬取不到任…

android获取小程序音频时长,微信小程序获取音频时长与实时获取播放进度

首先在没有播放音频之前&#xff0c;居然拿不到总时长但是在播放之后也需要设置setTimeout来获取所以在监听音频播放进度更新事件中获取。顺便获取当前播放进度按照官方的写法audioPlayed: function () {myAudio.play()setTimeout(() > {myAudio.onTimeUpdate(() > {cons…

Shell awk文本处理,shell脚本编写

Shell awk文本处理,shell脚本编写 一:内容包含awk、变量、运算符、if多分支 <a>语法糖&#xff1a; awk [options] commands files option   -F  定义字段分隔符,默认的分隔符是连续的空格或制表符      使用option中的-F参数定义间隔符号      用$1,$2,$3…

当超级智能崛起时……

来源&#xff1a;资本实验室“大雷&#xff0c;你脑子没出啥毛病吧&#xff1f;”李春花轻声问道&#xff0c;眼睛里满是关切的神色。“喔&#xff0c;你放心&#xff0c;俺没事&#xff01;上次的事故之后&#xff0c;我的芯片和操作系统都已经升级到最新版本啦&#xff01;”…

小米小爱音箱Pro8安装app_小米小爱音箱HD获DXO评为第二!低音准确度很高

前几天&#xff0c;知名评测机构DXOMARK公布了用于测试无线音箱音质的新基准——DXOMARK Speaker。据了解&#xff0c;这个基准由百个测试汇集而成&#xff0c;该机构称这个基准为针对音箱产品唯一的科学评分。11月9日&#xff0c;该机构发文称&#xff0c;小米小爱音箱HD获得了…

Android自定义组合布局,Android 流式布局 + 自定义组合控件

自定义组合控件package yanjupeng.bawei.com.day09.two;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.EditText;import android.widget.Lin…

freemark循环map_freemarker中循环map根据key值得value 报错

[#list uMap?keys as key]${uMap[key]}[/#list]Map uMap new HashMap();uMap.put(1,"zhangsan");uMap.put(2,"lisi");model.addAttribute("uMap", uMap);严重: Servlet.service() for servlet springMVC threw exceptionFreeMarker template e…

Lua的垃圾回收机制详解

Lua 是一种轻量级的编程语言&#xff0c;广泛用于嵌入到其他应用程序中&#xff0c;尤其是在游戏开发领域。Lua 的内存管理机制采用了自动垃圾收集&#xff08;Garbage Collection&#xff09;的方法。以下是Lua内存管理的一些关键方面&#xff1a; 垃圾收集原理概述 Lua 使用…

2020年AI怎么发展?听加州大学、谷歌、英伟达、IBM怎么说

来源&#xff1a;机器之心AI 领域最杰出的头脑如何总结 2019 年技术进展&#xff0c;又如何预测 2020 年发展趋势呢&#xff1f;本文介绍了 Soumith Chintala、Celeste Kidd、Jeff Dean 等人的观点。人工智能不是将要改变世界&#xff0c;而是正在改变世界。在新年以及新的十年…

python线程池官网-Python线程池下载txt

下次试试用scrapy模块 # codingutf-8 import requests import threadpool def download_file(i): """下载文件""" download_url f"https://www.txt2016.com/e/DownSys/xiazai/?classid1&pathid0&id{i}" file requests.get(…

select样式的重写

select {/*统一边框*/border: solid 1px #000;/*将默认的select选择框样式清除*/appearance:none;//这个样式就是清楚他的下拉按钮的默认样式-moz-appearance:none;-webkit-appearance:none;/*替换选择框的最右侧显示小箭头图片*/background: url("http://****.png")…

ip打包后如何加入 xilinx_科普!插上USB设备后电脑是怎么识别的呢?

欢迎FPGA工程师加入官方微信技术群每次当插上鼠标或者U盘的时候&#xff0c;电脑是怎么知道是什么设备的呢&#xff1f;这里用到的就是枚举了。枚举&#xff0c;其实就是让HOST认识这个USB涉笔&#xff0c;并且为该设备准备资源&#xff0c;建立好主机和设备之间的数据传递机制…

两院院士评选2019年中国、世界十大科技进展新闻揭晓

来源&#xff1a;科学网由中国科学院、中国工程院主办&#xff0c;中国科学院学部工作局、中国工程院办公厅、中国科学报社承办&#xff0c;中国科学院院士和中国工程院院士投票评选的2019年中国十大科技进展新闻、世界十大科技进展新闻&#xff0c;1月11日在京揭晓。此项年度评…

android炫酷叼ui,XUI: 一个简洁而优雅的Android原生UI框架,解放你的双手!

XUI一个简洁而又优雅的Android原生UI框架&#xff0c;解放你的双手&#xff01;还不赶紧点击使用说明文档&#xff0c;体验一下吧&#xff01;涵盖绝大部分的UI组件&#xff1a;TextView、Button、EditText、ImageView、Spinner、Picker、Dialog、PopupWindow、ProgressBar、Lo…

笔记本电脑麦克风在哪里_定制款MacBook Pro? 13.3 体验 “旧”时代的 One Pecie_笔记本电脑...

2020-11-11 13:19:377点赞18收藏18评论9月28日 - 11月12日&#xff0c;参与#双11购物攻略#征稿活动&#xff0c;赢取苹果全家桶8888元超级锦鲤大奖&#xff01;瓜分十万金币&#xff0c;值得买周边一次全攒齐&#xff01;品类、品牌、场景、价格&#xff0c;快来分享你的购物心…

android 拍照屏幕大小,Android Camera 找出屏幕的最佳尺寸大小

大家平时都会调用到Camera 这个API&#xff0c;在设置Camera.Paramera的参数的时候&#xff0c;有一个预览大小。也就是&#xff1a;setPreviewSize(int width, ing height)这个相机的大小不能随便设置&#xff0c;如果设置了不可接受的值&#xff0c;程序会崩溃掉。现在给大家…