iOS开发——计算时间差,计算日期查,计算年龄。

  我开发的很多项目中都有用到计算时间差的地方,这里把我封装的一个小方法分享给需要的朋友,当然主要是初学者们,哈哈。

  主要使用了NSDate、NSCalender、NSComponents三个类,这三个类里面的方法很多,大家都可以浏览一下,特别需要注意方法后面的版本限制,注意使用不要出现版本适配问题。废话不多,直接Show you the code:

  首先是.h

 1 /**
 2  *  计算时间差
 3  *
 4  *  @param startDate 开始时间
 5  *  @param endDate   结束时间
 6  *
 7  *  @return 时间差
 8  */
 9 + (NSDateComponents *)calculateTimeDifferenceWithStartDateString:(NSString *)startString endDateString:(NSString *)endString;
10 + (NSDateComponents *)calculateTimeDifferenceWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate;
11 + (NSDateComponents *)calculateAgeWithDate:(NSDate *)date;
12 + (NSDateComponents *)calculateAgeWithDateString:(NSString *)string;

  然后是.m

 1 + (NSDateComponents *)calculateTimeDifferenceWithStartDateString:(NSString *)startString endDateString:(NSString *)endString {
 2
 3     startString = [self dateStringFormatter:startString];
 4     endString = [self dateStringFormatter:endString];
 5     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 6     [dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
 7     [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
 8
 9     return [self calculateTimeDifferenceWithStartDate:[dateFormatter dateFromString:startString] endDate:[dateFormatter dateFromString:endString]];
10 }
11
12 + (NSDateComponents *)calculateTimeDifferenceWithStartDate:(NSDate *)startDate endDate:(NSDate *)endDate {
13
14     // 日历
15     NSCalendar *calendar = [NSCalendar currentCalendar];
16     // 日期对比项
17     NSUInteger unitFlags = NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitWeekday;
18
19     return [calendar components:unitFlags fromDate:startDate toDate:endDate options:NSCalendarMatchStrictly];
20 }
21
22 + (NSDateComponents *)calculateAgeWithDate:(NSDate *)date {
23
24     return [self calculateTimeDifferenceWithStartDate:date endDate:[NSDate date]];
25 }
26
27 + (NSDateComponents *)calculateAgeWithDateString:(NSString *)dateString {
28
29     dateString = [self dateStringFormatter:dateString];
30     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
31     [dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
32     [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; //设定日期时区
33
34     return [self calculateAgeWithDate:[dateFormatter dateFromString:dateString]];
35 }
36
37 /**
38  *  日期字符串格式化方法
39  *
40  *  @param dateString 日期字符串
41  *
42  *  @return 格式化后的字符串
43  */
44 + (NSString *)dateStringFormatter:(NSString *)dateString {
45
46     // 去日期字符串的符号
47     dateString = [dateString stringByReplacingOccurrencesOfString:@"-" withString:@""];
48     dateString = [dateString stringByReplacingOccurrencesOfString:@":" withString:@""];
49     dateString = [dateString stringByReplacingOccurrencesOfString:@"/" withString:@""];
50     dateString = [dateString stringByReplacingOccurrencesOfString:@" " withString:@""];
51
52     // 时间字符串长度超出,截取14位
53     if ([dateString length] > 14) {
54         dateString = [dateString substringToIndex:13];
55     }
56
57     // 时间字符串长度不够,补0
58     while ([dateString length] < 14) {
59         dateString = [dateString stringByAppendingString:@"0"];
60     }
61
62     return dateString;
63 }

  谢谢观看!

时间: 2024-10-11 06:17:34

iOS开发——计算时间差,计算日期查,计算年龄。的相关文章

iOS开发——实用技术OC篇&amp;日期处理

日期处理 一:时间截 1 NSString *str=@"1368082020";//时间戳 2 3 NSTimeInterval time=[str doubleValue]+28800;//因为时差问题要加8小时 == 28800 sec 4 5 NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time]; 6 7 NSLog(@"date:%@",[detaildate description]

iOS开发-plist文件增删改查

plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plist ,因此被称为 plist文件,xCode中默认的是一种树状的结构展现出来数据,可视化的动态增删改查,非常人性化,不过最终的结果是以XML形式存储的,Plist文件可以用于存储用户的一些设置信息,具体根据需求而定. 简单创建文件 简单创建文件就是说可以直接从xCode创建,右击项目new File

iOS开发中的NSDateFormatter日期格式解析总结

在工作中,常常遇到将时间解析出来转换成自己相应要求的时间格式,之前也有收集相应的转换格式,如今将自己收集的一部分了做个分享,应该比較完好了,欢迎大家继续补充 年 y 将年份 (0-9) 显示为不带前导零的数字 yy 以带前导零的两位数字格式显示年份 yyy 以四位数字格式显示年份 yyyy 以四位数字格式显示年份 月 M 将月份显示为不带前导零的数字(如一月表示为 1) MM 将月份显示为带前导零的数字(比如 01/12/01) MMM 将月份显示为缩写形式(比如 Jan) MMMM 将月份显示

java计算时间差

java实现计算时间差 正式版:       /** * 计算时间差,求出两者相隔的时间 * * @param nowDate *            当前时间 * @param calculateDate *            计算的时间 * @return */ public static long calculateTime(Date nowDate, Date calculateDate) { long ret = 0; try { long t = nowDate.getTime

iOS开发下载文件速度计算

当我们写下载界面的时候,需要向用户展示每秒下载多少KB,这个时候就需要计算速度.如下: 我用的是AFNetworking来做下载的,我们拿AFHTTPRequestOperation来举列,AFHTTPRequestOperation中有个方法: - (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead)

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同. mysql> SELECT TIMESTAMPDIFF(MONTH,'200

iOS开发 --UITableviewCell的自定义与计算frame

一.UITableViewCell简介 UITableView上的每一行的内容都是UITableViewCell来显示的,通过 UITableViewDataSource的协议方法:tableView:cellForRowAtIndexPath:来初始化要显示的内容.而 UITableViewCell则是通过它自带的contentView来显示,每个Cell都默认有个子视图contentView,所以每个cell 上显示的内容都是加在这个视图上. 系统的UITableViewCell有四种类型

李洪强漫谈iOS开发[C语言-041]-计算月份天数

李洪强漫谈iOS开发[C语言-041]-计算月份天数 

php计算两个日期时间差(返回年、月、日)

在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相差 年.月.日. 方法一: /** +---------------------------------------------------------- * 功能:计算两个日期相差 年 月 日 +---------------------------------------------------