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

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

封装用于解析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,然后解析出来,就是这么简单:)

目录
相关文章
|
10天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
2月前
|
数据可视化 数据挖掘 BI
团队管理者必读:高效看板类协同软件的功能解析
在现代职场中,团队协作的效率直接影响项目成败。看板类协同软件通过可视化界面,帮助团队清晰规划任务、追踪进度,提高协作效率。本文介绍看板类软件的优势,并推荐五款优质工具:板栗看板、Trello、Monday.com、ClickUp 和 Asana,助力团队实现高效管理。
82 2
|
6天前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
43 12
|
4月前
|
安全 编译器 程序员
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
91 2
|
10天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
10天前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。
|
8月前
|
缓存 开发者 索引
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
深入解析 `org.elasticsearch.action.search.SearchRequest` 类
|
4月前
|
存储 Java API
详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
【10月更文挑战第19天】深入剖析Java Map:不仅是高效存储键值对的数据结构,更是展现设计艺术的典范。本文从基本概念、设计艺术和使用技巧三个方面,详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
102 3
|
4月前
|
存储 编译器 C语言
C++类与对象深度解析(一):从抽象到实践的全面入门指南
C++类与对象深度解析(一):从抽象到实践的全面入门指南
73 8
|
4月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
71 4

推荐镜像

更多