IOS 日期的簡潔格式展示

来源:http://www.cnblogs.com/xubaoaichiyu/archive/2016/03/27/5327365.html
-Advertisement-
Play Games

首先我要解釋一下標題的意義,日期的簡潔格式展示,之所以簡介,是因為讓人一目瞭然,不需要思考是什麼時候。 在詳細一點就是我們在微信朋友圈中 所看到的時間格式。 例如:剛剛 -幾分鐘前-幾小時前等等。 今天這裡帶來的是一個簡單的類別。 方便實用。 以及簡單的實際應用。 先看看一看類別是什麼樣子的 .h ...


首先我要解釋一下標題的意義,日期的簡潔格式展示,之所以簡介,是因為讓人一目瞭然,不需要思考是什麼時候。

在詳細一點就是我們在微信朋友圈中 所看到的時間格式。

例如:剛剛 -幾分鐘前-幾小時前等等。

今天這裡帶來的是一個簡單的類別。

方便實用。

以及簡單的實際應用。

先看看一看類別是什麼樣子的

.h

#import <Foundation/Foundation.h>

@interface NSDate (CXExtension)

-(NSDateComponents *)dateFrom:(NSDate *)from;

-(BOOL)isThisYear;
-(BOOL)isToday;
-(BOOL)isYesterday;

@end

.m

#import "NSDate+CXExtension.h"

@implementation NSDate (CXExtension)

-(NSDateComponents *)dateFrom:(NSDate *)from{
    //日曆
    NSCalendar *calendar = [NSCalendar currentCalendar];
    
    NSCalendarUnit unit = NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
    
    return [calendar components:unit fromDate:from toDate:self options:0 ];
}
//判斷是否為今年
-(BOOL)isThisYear{
    
    NSCalendar * calendar = [NSCalendar currentCalendar];
    
    NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];
    NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];
    
    return selfYear == nowYear;
    
}
//判讀是否為今天
-(BOOL)isToday{
    
    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    
    formatter.dateFormat = @"yyyy-MM-dd";
    
    NSString * nowDate = [formatter stringFromDate:[NSDate date]];
    NSString * selfDate = [formatter stringFromDate:self];
    
    return [nowDate isEqualToString:selfDate];
    
}
//判斷是否為昨天
-(BOOL)isYesterday{
    
    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    
    formatter.dateFormat = @"yyyy-MM-dd";
    
    NSDate * nowDate = [formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
    NSDate * selfdate = [formatter dateFromString:[formatter stringFromDate:self]];
    
    NSCalendar * calendar = [NSCalendar currentCalendar];
    
    NSDateComponents * unit = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:selfdate toDate:nowDate options:0];
    return unit.year == 0 && unit.month == 0 && unit.day == 1;
    
}
@end

下麵的實力所展現的效果:

當時間為去年時 顯示全部時間格式

當時間為今年時分為以下情況

當時間為今天是判斷具體時間

產生幾小時前

幾分鐘前

剛剛的顯示格式

當時間為昨天是 顯示昨天以及時分秒

當時間既不是今天又不是昨天時

顯示除年以外的所有時間格式

-(NSString *)create_time{
    NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSDate * creat = [formatter dateFromString:_create_time];
    if (creat.isThisYear) {
        
        if (creat.isToday) {
            
            NSDateComponents * unit = [creat dateFrom:creat];
            if (unit.hour > 1) {
                return [NSString stringWithFormat:@"%zd小時前",unit.hour];
            }else if (unit.minute > 1){
                return [NSString stringWithFormat:@"%zd分鐘前",unit.minute];
            }else{
                return @"剛剛";
            }
        }else if (creat.isYesterday){
            formatter.dateFormat = @"昨天 HH:mm:ss";
            return[formatter stringFromDate:creat];
        }else{
            formatter.dateFormat = @"MM-dd HH:mm:ss";
            return [formatter stringFromDate:creat];
        }
    }
    else{
        return[formatter stringFromDate:creat];
    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實現js選項卡 html的代碼如下: 1、通過滑鼠划過來看選中選項卡的哪個標題,其實也就是通過li的class=“tabin1”來改變選中標題樣式; 2、選中標題的內容也是通過class的轉變來控制,主要是使用display樣式; 3、選中標題和內容通過他們的下標來對應起來; 具體的js代碼實現如下 ...
  • 一、什麼是響應式 隨著移動端越來遇火 網站的佈局成為一個熱議的話題 有的人喜歡用手機瀏覽網站、有的人喜歡用paid瀏覽網站、有人喜歡用電腦瀏覽網站 那麼問題來了 我們怎麼樣才能使用一套css樣式 完成三種終端的適配呢 萬維組織(W3c)朝思暮想 終於提出了一種可以相容各個終端的頁面佈局樣式語法 交給 ...
  • 一、asp語言和PHP語言 首先製作一個頭部文件head.asp,或者一個底部文件foot.asp。如主頁是index.asp,調用頭部代碼是在index.asp文件代碼的開始位置(第一個標記後面,<head>標記前面)增加如下代碼: 調用共用底部文件代碼是在index.asp文件代碼的結束位置(最 ...
  • 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <style> 5 div 6 { 7 width:100px; 8 height:100px; 9 background:yellow; 10 transition:width 2s; 11 -moz-transition ...
  • 上文《詳解Javascript的繼承實現》介紹了一個通用的繼承庫,基於該庫,可以快速構建帶繼承關係和靜態成員的javascript類,好使用也好理解,額外的好處是,如果所有類都用這種庫來構建,還能使代碼在整體上保持一致的風格,便於其它同事閱讀和理解。在寫完該文之後,這兩天時不時都在思考這個庫可能存在... ...
  • 對於H5來說,canvas可以說是它最有特色的一個地方了,有了它之後我們可以隨意的在網頁上畫各種各樣的圖形,做一些小游戲啊什麼的。canvas這個標簽的用法,在網上也有特別多的教程了,這裡就不作介紹了。今天我們就用canvas來做一個小小的時鐘。完整的代碼在這裡https://github.com/ ...
  • × 目錄 [1]首行縮進 [2]水平對齊 [3]字間隔[4]字母間隔[5]文本轉換 [6]文本修飾 前面的話 CSS文本樣式是相對於內容進行的樣式修飾。由於在層疊關係中,內容要高於背景。所以文本樣式相對而言更加重要。有些人對文本和字體樣式之間的不同不太瞭解,簡單地講,文本是內容,而字體則用於顯示這個 ...
  • 將瀏覽器預設的下拉框樣式清除,然後應用上自己的,再附一張向右對齊小箭頭的圖片即可。 IE8/9並不支持 appearance:none CSS屬性,想要支持的話可能需要非常特殊的方法,參考SF: 我們需要為其添加一個父容器,容器是用來覆蓋小箭頭的,然後為select添加一個向右的小偏移或者寬度大於父 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...