文档章节

获取当前年月日与日期的封装

精神贵族养成中
 精神贵族养成中
发布于 2016/04/07 17:51
字数 780
阅读 57
收藏 1

获取当月,今年:

NSInteger toMonth = [[NSDate date] YMDComponents].month;

NSInteger toYear = [[NSDate date] YMDComponents].year;


- (NSDateComponents *)YMDComponents /**<获取年月日对象*/

{

    return [[NSCalendar currentCalendar] components:

            NSCalendarUnitYear|

            NSCalendarUnitMonth|

            NSCalendarUnitDay fromDate:self];

}



新建objective-C文件------选择category(类别)

 *  @brief  日期格式处理封装

.h文件:

@interface NSDate (WQCalendarLogic)

- (NSDate *)firstDayOfCurrentYear;/**<当年首日*/


- (NSDate *)firstDayOfCurrentMonth;/**<当月首日*/


- (NSDate *)dayFormerePreviousYear;/**<上一年*/


- (NSDate *)dayFormerePreviousWithYear:(NSInteger)yearNum;/**<上几年*/


- (NSDate *)dayLastPreviousYear;/**<下一年*/


- (NSDate *)dayInThePreviousMonth;/**<上一个月*/


- (NSDate *)dayInThePreviousWithMonth:(NSInteger)monthNum;/**<当前一个月以前的第monthNum个月*/


- (NSDateComponents *)YMDComponents;/**<获取年月日对象*/


+ (NSDate *)dateFromString:(NSString *)dateString;/**<NSStringNSDate*/


/**

 *  将传入日期字符串转成日期

 *  @param  dateString 日期字符串

 *  @param  format     传入日期的日期格式

 *  @return  日期

 */

+ (NSDate *)dateFromString:(NSString *)dateString withFormat:(NSString *)format;


- (NSString *)stringFromDate:(NSString *) formatString;/**<NSDate(所需格式的)NSString*/


/**

 *  将日期字符串转成制定格式的日期字符串

 *  @param dateString   日期字符串

 *  @param dateString   日期字符串的日期格式

 *  @param formatString 转换后的日期格式

 *  @return 转换后的日期字符串

 */

+ (NSString *)stringFormString:(NSString *)dateString withDateStringFormat:(NSString *)dateFormate withFormat:(NSString *)formatString;


/**

 *  给你一个方法,输入参数是NSDate,输出结果是星期几的字符串

 *  @param inputDate 日期date

 *  @return 星期几

 */

+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate;


/**

 *  返回所给日期的几天后的日期

 *  @param days 天数

 *  @return 几天后的日期

 */

- (NSDate *)getLasterDay:(NSInteger)days;


@end


.m文件:

#import "NSDate+WQCalendarLogic.h"


@implementation NSDate (WQCalendarLogic)


- (NSDate *)firstDayOfCurrentYear /**<当年首日*/

{

    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:self];

    dateComponents.month = 1;

    dateComponents.day = 1;

    return [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

}


- (NSDate *)firstDayOfCurrentMonth /**<当月首日*/

{

    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitYear fromDate:self];

    dateComponents.month = [[NSDate date] YMDComponents].month;

    dateComponents.day = 1;

    return [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

}


- (NSDate *)dayFormerePreviousYear /**<上一年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = -1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayFormerePreviousWithYear:(NSInteger)yearNum /**<上几年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = yearNum;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayLastPreviousYear /**<下一年*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.year = +1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayInThePreviousMonth /**<上一个月*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.month = -1;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDate *)dayInThePreviousWithMonth:(NSInteger)monthNum /**<当前一个月以前的第monthNum个月*/

{

    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];

    dateComponents.month = -monthNum;

    return [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:self options:0];

}


- (NSDateComponents *)YMDComponents /**<获取年月日对象*/

{

    return [[NSCalendar currentCalendar] components:

            NSCalendarUnitYear|

            NSCalendarUnitMonth|

            NSCalendarUnitDay fromDate:self];

}


+ (NSDate *)dateFromString:(NSString *)dateString /**<NSStringNSDate*/

{

    

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

//    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];

    [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm"];

    

    NSDate *destDate = [dateFormatter dateFromString:dateString];

    

    return destDate;

    

}


+ (NSDate *)dateFromString:(NSString *)dateString withFormat:(NSString *)format

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:format];

    NSDate *destDate = [dateFormatter dateFromString:dateString];

    

    return destDate;

}


- (NSString *)stringFromDate:(NSString *) formatString /**<NSDate(所需格式的)NSString*/

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

    //zzz表示时区,zzz可以删除,这样返回的日期字符将不包含时区信息。

    

//    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];

    [dateFormatter setDateFormat:formatString];

    

    NSString *destDateString = [dateFormatter stringFromDate:self];

    

    return destDateString;

}


+ (NSString *)stringFormString:(NSString *)dateString withDateStringFormat:(NSString *)dateFormate withFormat:(NSString *)formatString

{

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    

    [dateFormatter setDateFormat:dateFormate];

    

    NSDate *destDate = [dateFormatter dateFromString:dateString];

//    NSDate *date = [self dateFromString:dateString];

    return [destDate stringFromDate:formatString];

}


//给你一个方法,输入参数是NSDate,输出结果是星期几的字符串。

+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate

{

    NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期日", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];

    

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    

    NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Beijing"];

    

    [calendar setTimeZone: timeZone];

    

    NSCalendarUnit calendarUnit = NSWeekdayCalendarUnit;

    

    NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];

    

    return [weekdays objectAtIndex:theComponents.weekday];

}


- (NSDate *)getLasterDay:(NSInteger)days

{


    NSDateComponents *comps = [[NSDateComponents alloc] init];

    comps.day = days;

    

    NSLog(@"%ld:%ld:%ld", comps.year, comps.month,comps.day);

    return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:self options:0];

    

}


@end


© 著作权归作者所有

精神贵族养成中
粉丝 9
博文 27
码字总数 5554
作品 0
私信 提问
Java 8 的时间日期 API

上一篇文章『Java 的时间日期 API』中,我们学习了由 Date、Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用。终于,Java 8 借鉴第三方优...

Single_YAM
2018/04/23
0
0
PHP时间戳 strtotime()使用方法和技巧

php strtotime()解释如何使用,看了下面的文章就要以学习到了。下面还有php文档函数解释。 在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间...

orientalfashion
2013/10/30
639
0
【转载】Sqlserver日期时间格式化总结

在Sqlserver数据库中,允许存储datetime的时间类型,该存储类型包含时间的时分秒以及毫秒等数值,在SQL语句查询的时候,很多时候我们需要对查询出来的日期数据进行格式化操作,Sqlserver提供...

江湖逍遥
04/04
0
0
C# / .net 时间格式转换

0:时间格式转换 System.DateTime currentTime=new System.DateTime(); 1 取当前年月日时分秒 currentTime=System.DateTime.Now; 2 取当前年 int 年=currentTime.Year; 3 取当前月 int 月=cu......

YYYu
2012/08/11
227
0
MySql计算两个日期时间的差函数

MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YE...

SibylY
2016/08/23
26
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部