封装用于解析NSDate的便利的类

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

封装用于解析NSDate的便利的类

此类可以从NSDate中解析出年份,月份,日期,时,分,秒,毫秒,足够用来做好多事情了,现提供源码如下:

以下是核心的类:

TimeInfo.h 与 TimeInfo.m

//
//  TimeInfo.h
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>
@class HumanTimeInfo;

@interface TimeInfo : NSObject

+ (HumanTimeInfo *)humanCanUnderstandFromDate:(NSDate *)date;

@end


//
//  TimeInfo.m
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "TimeInfo.h"
#import "HumanTimeInfo.h"

static NSDateFormatter   *_dateFormatter;

@implementation TimeInfo

+ (void)initialize {
    if (self == [TimeInfo class]) {
        _dateFormatter            = [[NSDateFormatter alloc] init];
        _dateFormatter.locale     = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"];
        _dateFormatter.timeZone   = [NSTimeZone timeZoneWithName:@"GMT"];
        _dateFormatter.dateFormat = @"yyyy:MM:dd:MMM:MMMM:HH:mm:ss:aa:EEE:EEEE:SSS"; // SSSS
    }
}

+ (HumanTimeInfo *)humanCanUnderstandFromDate:(NSDate *)date {
    if (date != nil) {
        NSArray *timeInfoArray = [[_dateFormatter stringFromDate:date] componentsSeparatedByString:@":"];
        HumanTimeInfo *info    = [HumanTimeInfo new];
        info.year              = timeInfoArray[0];
        info.mounth            = timeInfoArray[1];
        info.day               = timeInfoArray[2];
        info.enMounth          = timeInfoArray[3];
        info.fullEnMounth      = timeInfoArray[4];
        info.hour              = timeInfoArray[5];
        info.min               = timeInfoArray[6];
        info.sec               = timeInfoArray[7];
        info.amPm              = timeInfoArray[8];
        info.enWeakday         = timeInfoArray[9];
        info.fullWeakday       = timeInfoArray[10];
        info.mSec              = timeInfoArray[11];
        
        return info;
    } else {
        return nil;
    }
}

@end

人类能够理解的信息类:

HumanTimeInfo.h 与 HumanTimeInfo.m

//
//  HumanTimeInfo.h
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface HumanTimeInfo : NSObject

@property (nonatomic, strong) NSString *year;         // 2014
@property (nonatomic, strong) NSString *mounth;       // 10
@property (nonatomic, strong) NSString *day;          // 16
@property (nonatomic, strong) NSString *enMounth;     // Oct
@property (nonatomic, strong) NSString *fullEnMounth; // October
@property (nonatomic, strong) NSString *hour;
@property (nonatomic, strong) NSString *min;
@property (nonatomic, strong) NSString *sec;
@property (nonatomic, strong) NSString *amPm;         // 上午或者下午
@property (nonatomic, strong) NSString *enWeakday;
@property (nonatomic, strong) NSString *fullWeakday;
@property (nonatomic, strong) NSString *mSec;         // 毫秒

@end


//
//  HumanTimeInfo.m
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "HumanTimeInfo.h"

@implementation HumanTimeInfo

@end

NSDate+CurrentTime.h 与 NSDate+CurrentTime.m
//
//  NSDate+CurrentTime.h
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>
@class HumanTimeInfo;

@interface NSDate (CurrentTime)

+ (HumanTimeInfo *)currentTime;
+ (HumanTimeInfo *)dateFrom:(NSDate *)date;

@end


//
//  NSDate+CurrentTime.m
//  ShowTime
//
//  Created by YouXianMing on 14-10-16.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "NSDate+CurrentTime.h"
#import "HumanTimeInfo.h"
#import "TimeInfo.h"

@implementation NSDate (CurrentTime)

+ (HumanTimeInfo *)currentTime
{
    return [TimeInfo humanCanUnderstandFromDate:[NSDate date]];
}

+ (HumanTimeInfo *)dateFrom:(NSDate *)date
{
    return [TimeInfo humanCanUnderstandFromDate:date];
}

@end

使用的话,给出NSDate,然后解析出来,就是这么简单:)

目录
相关文章
|
19天前
|
存储 编译器 数据安全/隐私保护
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解2
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
25 3
|
19天前
|
编译器 C++
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解1
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
40 3
|
4月前
|
缓存 开发者 索引
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
|
13天前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
18 0
|
4月前
|
存储 安全 Java
滚雪球学Java(60):深入解析Java中的Vector集合类!
【6月更文挑战第14天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
246 59
滚雪球学Java(60):深入解析Java中的Vector集合类!
|
2月前
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
37 0
Spring高手之路22——AOP切面类的封装与解析
|
2月前
|
JSON 图形学 数据格式
Json☀️ 一、认识Json是如何解析成类的
Json☀️ 一、认识Json是如何解析成类的
|
2月前
|
开发者 编解码
界面适应奥秘:从自适应布局到图片管理,Xamarin响应式设计全解析
【8月更文挑战第31天】在 Xamarin 的世界里,构建灵活且适应性强的界面是每位开发者的必修课。本文将带您探索 Xamarin 的响应式设计技巧,包括自适应布局、设备服务协商和高效图片管理,帮助您的应用在各种设备上表现出色。通过 Grid 和 StackLayout 实现弹性空间分配,利用 Device 类检测设备类型以加载最优布局,以及使用 Image 控件自动选择合适图片资源,让您轻松应对不同屏幕尺寸的挑战。掌握这些技巧,让您的应用在多变的市场中持续领先。
32 0
|
2月前
|
存储 开发者 Ruby
【揭秘Ruby高手秘籍】OOP编程精髓全解析:玩转类、继承与多态,成就编程大师之路!
【8月更文挑战第31天】面向对象编程(OOP)是通过“对象”来设计软件的编程范式。Ruby作为一种纯面向对象的语言,几乎所有事物都是对象。本文通过具体代码示例介绍了Ruby中OOP的核心概念,包括类与对象、继承、封装、多态及模块混合,展示了如何利用这些技术更好地组织和扩展代码。例如,通过定义类、继承关系及私有方法,可以创建具有特定行为的对象,并实现灵活的方法重写和功能扩展。掌握这些概念有助于提升代码质量和可维护性。
32 0
|
4月前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态

推荐镜像

更多