## 一:效果

—-因為本人黑蘋果,系統時間亂跳 時間顯示的不準,但是代碼沒有問題
## 二:實現代碼
~~~
/**
1.今年
1> 今天
* 1分內: 剛剛
* 1分~59分內:xx分鐘前
* 大于60分鐘:xx小時前
2> 昨天
* 昨天 xx:xx
3> 其他
* xx-xx xx:xx
2.非今年
1> xxxx-xx-xx xx:xx
*/
- (NSString *)created_at
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 如果是真機調試,轉換這種歐美時間,需要設置locale
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
// 設置日期格式(聲明字符串里面每個數字和單詞的含義)
// E:星期幾
// M:月份
// d:幾號(這個月的第幾天)
// H:24小時制的小時
// m:分鐘
// s:秒
// y:年
fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
// _created_at = @"Tue Sep 30 17:06:25 +0600 2014";
// 微博的創建日期
NSDate *createDate = [fmt dateFromString:_created_at];
// 當前時間
NSDate *now = [NSDate date];
// 日歷對象(方便比較兩個日期之間的差距)
NSCalendar *calendar = [NSCalendar currentCalendar];
// NSCalendarUnit枚舉代表想獲得哪些差值
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
// 計算兩個日期之間的差值
NSDateComponents *cmps = [calendar components:unit fromDate:createDate toDate:now options:0];
if ([createDate isThisYear]) { // 今年
if ([createDate isYesterday]) { // 昨天
fmt.dateFormat = @"昨天 HH:mm";
return [fmt stringFromDate:createDate];
} else if ([createDate isToday]) { // 今天
if (cmps.hour >= 1) {
return [NSString stringWithFormat:@"%d小時前", cmps.hour];
} else if (cmps.minute >= 1) {
return [NSString stringWithFormat:@"%d分鐘前", cmps.minute];
} else {
return @"剛剛";
}
} else { // 今年的其他日子
fmt.dateFormat = @"MM-dd HH:mm";
return [fmt stringFromDate:createDate];
}
} else { // 非今年
fmt.dateFormat = @"yyyy-MM-dd HH:mm";
return [fmt stringFromDate:createDate];
}
}
~~~
### 時間分類來做判斷
這里用到了時間分類來做判斷是否是今天啦,是否是明天啦之類的東西,總之,這個很強大了
~~~
//
// NSDate+Extension.m
// 黑馬微博2期
//
// Created by apple on 14-10-18.
// Copyright (c) 2014年 heima. All rights reserved.
//
#import "NSDate+Extension.h"
@implementation NSDate (Extension)
/**
* 判斷某個時間是否為今年
*/
- (BOOL)isThisYear
{
NSCalendar *calendar = [NSCalendar currentCalendar];
// 獲得某個時間的年月日時分秒
NSDateComponents *dateCmps = [calendar components:NSCalendarUnitYear fromDate:self];
NSDateComponents *nowCmps = [calendar components:NSCalendarUnitYear fromDate:[NSDate date]];
return dateCmps.year == nowCmps.year;
}
/**
* 判斷某個時間是否為昨天
*/
- (BOOL)isYesterday
{
NSDate *now = [NSDate date];
// date == 2014-04-30 10:05:28 --> 2014-04-30 00:00:00
// now == 2014-05-01 09:22:10 --> 2014-05-01 00:00:00
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd";
// 2014-04-30
NSString *dateStr = [fmt stringFromDate:self];
// 2014-10-18
NSString *nowStr = [fmt stringFromDate:now];
// 2014-10-30 00:00:00
NSDate *date = [fmt dateFromString:dateStr];
// 2014-10-18 00:00:00
now = [fmt dateFromString:nowStr];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmps = [calendar components:unit fromDate:date toDate:now options:0];
return cmps.year == 0 && cmps.month == 0 && cmps.day == 1;
}
/**
* 判斷某個時間是否為今天
*/
- (BOOL)isToday
{
NSDate *now = [NSDate date];
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd";
NSString *dateStr = [fmt stringFromDate:self];
NSString *nowStr = [fmt stringFromDate:now];
return [dateStr isEqualToString:nowStr];
}
@end
~~~
## 三:補充
星期和月份英文
一月 January 簡寫 Jan.?
二月 February 簡寫 Feb.?
三月 March 簡寫 Mar.?
四月 April 簡寫 Apr.?
五月 May 簡寫 May?
六月 June 簡寫 Jun.?
七月 July 簡寫 Jul.?
八月 August 簡寫 Aug.?
九月September 簡寫Sep.?
十月 October 簡寫 Oct.?
十一月November 簡寫 Nov.?
十二月December 簡寫 Dec.
星期一: Mon.=Monday?
星期二: Tue.=Tuesday?
星期三: Wed.=Wednesday?
星期四: Thu.=Thursday?
星期五: Fri.=Friday?
星期六: Sat.=Saturday?
星期天: Sun.=Sunday
- 前言
- (1)微博主框架-子控制器的添加
- (2)微博主框架-自定義導航控制器NavigationController
- (3)微博主框架-UIImage防止iOS7之后自動渲染_定義分類
- (4)微博自定義tabBar中間的添加按鈕
- (5)微博自定義搜索框searchBar
- (6)導航控制器NavigationController 的滑動回退功能實現
- (7)程序啟動新特性用UICollectionViewController實現
- (8)用AFNetworking和SDWebImage簡單加載微博數據
- (9)微博模型之時間相關重要操作,判斷剛剛,昨天,今年等等
- (10)微博cell中圖片的顯示以及各種填充模式簡介
- (11)發送微博自定義TextView實現帶占位文字
- (12)發送微博自定義工具條代理實現點擊事件
- (13)發送微博調用相機里面的圖片以及調用相機