您的位置:首页 > 移动开发 > IOS开发

iOS开发——时间格式类

2016-06-16 15:40 429 查看
2017.1.5更新  添加了更多方法,详情到GitHub下载工具类源码

https://github.com/liuchengli/DateTimeHelper

目前只实现了三个类方法,

第一个获取当前时间,以字符创的形式返回,例如"201606161532"

第二个以当前时间与给定时间的时间差(秒)

第三个以当前时间与给定时间的时间差(分)

.h文件

//
//  TimeHelper.h
//  ZiPeiYi
//
//  Created by 刘成利 on 16/6/14.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface TimeHelper : NSObject

+ (NSString *)getCurrentTimeString;

+ (NSString *)secondsFromTimeString:(NSString *)timeString;

+ (NSString *)minuteFromTimeString:(NSString *)timeString;

@end


.m文件

//
//  TimeHelper.m
//  ZiPeiYi
//
//  Created by 刘成利 on 16/6/14.
//  Copyright © 2016年 YouXianMing. All rights reserved.
//

#import "TimeHelper.h"

@implementation TimeHelper

+ (NSString *)getCurrentTimeString{

NSDate* nowTime = [NSDate date];

//转换时间格式

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];//格式化

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

NSString* tempString1 = [dateFormatter stringFromDate:nowTime];

NSDate* date = [dateFormatter dateFromString:tempString1];

//转换时间格式

NSDateFormatter*df = [[NSDateFormatter alloc]init]; //格式化

[df setDateFormat:@"yyyyMMddHHmmss"];

[df setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_CN"]];

return  [df stringFromDate:date];

}

+ (NSString *)secondsFromTimeString:(NSString *)timeString{

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];//设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
[formatter setTimeZone:timeZone];
NSDate *datenow = [NSDate date];
//设置一个字符串的时间
NSMutableString *datestring = [NSMutableString stringWithFormat:@"%@",timeString];
//注意 如果20141202052740必须是数字,如果是UNIX时间,不需要下面的插入字符串。
[datestring insertString:@"-" atIndex:4];
[datestring insertString:@"-" atIndex:7];
[datestring insertString:@" " atIndex:10];
[datestring insertString:@":" atIndex:13];
[datestring insertString:@":" atIndex:16];

NSDateFormatter * dm = [[NSDateFormatter alloc]init];
//指定输出的格式   这里格式必须是和上面定义字符串的格式相同,否则输出空
[dm setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate * newdate = [dm dateFromString:datestring];
long dd = (long)[datenow timeIntervalSince1970] - [newdate timeIntervalSince1970];

return [NSString stringWithFormat:@"%ld", dd];

//    if (dd/3600<1 && dd/60>1)
//    {
//        timeStr = [NSString stringWithFormat:@"%ld", dd/60];
//        timeStr=[NSString stringWithFormat:@"%@分钟前", timeString];
//    }
//    if (dd/3600>1&&dd/86400<1)
//    {
//        timeStr = [NSString stringWithFormat:@"%ld", dd/3600];
//        timeStr=[NSString stringWithFormat:@"%@小时前", timeString];
//    }
//    if (dd/86400>1)
//    {
//        timeStr = [NSString stringWithFormat:@"%ld", dd/86400];
//        timeStr=[NSString stringWithFormat:@"%@天前", timeString];
//    }

}

+ (NSString *)minuteFromTimeString:(NSString *)timeString{

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];//设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
[formatter setTimeZone:timeZone];
NSDate *datenow = [NSDate date];
//设置一个字符串的时间
NSMutableString *datestring = [NSMutableString stringWithFormat:@"%@",timeString];
//注意 如果20141202052740必须是数字,如果是UNIX时间,不需要下面的插入字符串。
[datestring insertString:@"-" atIndex:4];
[datestring insertString:@"-" atIndex:7];
[datestring insertString:@" " atIndex:10];
[datestring insertString:@":" atIndex:13];
[datestring insertString:@":" atIndex:16];
NSLog(@"datestring==%@",datestring);
NSDateFormatter * dm = [[NSDateFormatter alloc]init];
//指定输出的格式   这里格式必须是和上面定义字符串的格式相同,否则输出空
[dm setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSDate * newdate = [dm dateFromString:datestring];
long dd = (long)[datenow timeIntervalSince1970] - [newdate timeIntervalSince1970];

return [NSString stringWithFormat:@"%ld", dd/60];

}


个人使用的情况:

// 获取已存的时间字符串

 NSString *lastTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastTime"];

    if (lastTime == nil || lastTime.length == 0) {

        return;

    }

// 计算与当前的时间差秒

    NSString *secondsString  = [TimeHelper secondsFromTimeString:lastTime];

 

int seconds = secondsString.intValue;

    if (seconds > 60) {

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: