iOS 時間戳的轉換

在開發iOS程序時,有時候需要將時間格式調整成自己希望的格式,這個時候我們可以用NSDateFormatter類來處理。
例如:

//實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設定時間格式,這里可以設置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以獲取系統當前時間
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//輸出格式為:2010-10-27 10:22:13
NSLog(@"%@",currentDateStr);
//alloc后對不使用的對象別忘了release
[dateFormatter release];

?


字符說明

(:)

時間分隔符。在某些區域設置中,可以使用其他字符表示時間分隔符。時間分隔符在格式化時間值時分隔小時、分鐘和秒。格式化輸出中用作時間分隔符的實際字符由您的應用程序的當前區域性值確定。

(/)

日期分隔符。在某些區域設置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值時分隔日、月和年。格式化輸出中用作日期分隔符的實際字符由您的應用程序的當前區域性確定。

(%)

用于表明不論尾隨什么字母,隨后字符都應該以單字母格式讀取。也用于表明單字母格式應以用戶定義格式讀取。有關更多詳細信息,請參見下面的內容。

d

將日顯示為不帶前導零的數字(如 1)。如果這是用戶定義的數字格式中的唯一字符,請使用 %d。

dd

將日顯示為帶前導零的數字(如 01)。

EEE

將日顯示為縮寫形式(例如 Sun)。

EEEE

將日顯示為全名(例如 Sunday)。

M

將月份顯示為不帶前導零的數字(如一月表示為 1)。如果這是用戶定義的數字格式中的唯一字符,請使用 %M。

MM

將月份顯示為帶前導零的數字(例如 01/12/01)。

MMM

將月份顯示為縮寫形式(例如 Jan)。

MMMM

將月份顯示為完整月份名(例如 January)。

gg

顯示時代/紀元字符串(例如 A.D.)

h

使用 12 小時制將小時顯示為不帶前導零的數字(例如 1:15:15 PM)。如果這是用戶定義的數字格式中的唯一字符,請使用 %h。

hh

使用 12 小時制將小時顯示為帶前導零的數字(例如 01:15:15 PM)。

H

使用 24 小時制將小時顯示為不帶前導零的數字(例如 1:15:15)。如果這是用戶定義的數字格式中的唯一字符,請使用 %H。

HH

使用 24 小時制將小時顯示為帶前導零的數字(例如 01:15:15)。

m

將分鐘顯示為不帶前導零的數字(例如 12:1:15)。如果這是用戶定義的數字格式中的唯一字符,請使用 %m。

mm

將分鐘顯示為帶前導零的數字(例如 12:01:15)。

s

將秒顯示為不帶前導零的數字(例如 12:15:5)。如果這是用戶定義的數字格式中的唯一字符,請使用 %s。

ss

將秒顯示為帶前導零的數字(例如 12:15:05)。

f

顯示秒的小數部分。例如,ff 將精確顯示到百分之一秒,而 ffff 將精確顯示到萬分之一秒。用戶定義格式中最多可使用七個 f 符號。如果這是用戶定義的數字格式中的唯一字符,請使用 %f。

t

使用 12 小時制,并對中午之前的任一小時顯示大寫的 A,對中午到 11:59 P.M 之間的任一小時顯示大寫的 P。如果這是用戶定義的數字格式中的唯一字符,請使用 %t。

tt

對于使用 12 小時制的區域設置,對中午之前任一小時顯示大寫的 AM,對中午到 11:59 P.M 之間的任一小時顯示大寫的 PM。

對于使用 24 小時制的區域設置,不顯示任何字符。

y

將年份 (0-9) 顯示為不帶前導零的數字。如果這是用戶定義的數字格式中的唯一字符,請使用 %y。

yy

以帶前導零的兩位數字格式顯示年份(如果適用)。

yyy

以四位數字格式顯示年份。

yyyy

以四位數字格式顯示年份。

z

顯示不帶前導零的時區偏移量(如 -8)。如果這是用戶定義的數字格式中的唯一字符,請使用 %z。

zz

顯示帶前導零的時區偏移量(例如 -08)

zzz

顯示完整的時區偏移量(例如 -08:00)

?


格式顯示

M/d/yy

12/7/58

d-MMM

7-Dec

d-MMMM-yy

7-December-58

d MMMM

7 December

MMMM yy

December 58

hh:mm tt

08:50 PM

h:mm:ss t

8:50:35 P

H:mm

20:50

H:mm:ss

20:50:35

M/d/yyyy H:mm

12/7/1958 20:50

?

IOS NSDate日期操作總結

1?//?當前時間創建NSDate

? ? ? ??NSDate?*myDate = [NSDate?date];

? ? ? ??NSLog(@"myDate = %@",myDate);

2?//從現在開始的24小時

? ? ? ??NSTimeInterval?secondsPerDay =?24*60*60;

? ? ? ??NSDate?*tomorrow = [NSDate?dateWithTimeIntervalSinceNow:secondsPerDay];

? ? ? ??NSLog(@"myDate = %@",tomorrow);

3//根據已有日期創建日期

?? ? ? ??NSTimeInterval?secondsPerDay1 =?24*60*60;

? ? ? ??NSDate?*now = [NSDate?date];

? ? ? ??NSDate?*yesterDay = [now?addTimeInterval:-secondsPerDay1];

? ? ? ??NSLog(@"yesterDay = %@",yesterDay);

?

?4//比較日期

? ? ? ??BOOL?sameDate = [now?isEqualToDate:yesterDay];

? ? ? ??NSLog(@"sameDate = %lu",sameDate);

? ? ? ??4.1//獲取較早的日期

? ? ? ??NSDate?*earlierDate = [yesterDay?earlierDate:now];

? ? ? ??NSLog(@"earlierDate? = %@",earlierDate);

? ? ? ??4.2//較晚的日期

? ? ? ??NSDate?*laterDate = [yesterDay?laterDate:now];

? ? ? ??NSLog(@"laterDate? = %@",laterDate);

?

? ? ? ??//兩個日期之間相隔多少秒

? ? ? ??NSTimeInterval?secondsBetweenDates= [yesterDay?timeIntervalSinceDate:now];

? ? ? ??NSLog(@"secondsBetweenDates=? %lf",secondsBetweenDates);

? ? ? ??//通過NSCALENDAR類來創建日期

? ? ? ??NSDateComponents?*comp = [[NSDateComponentsalloc]init];

? ? ? ? [comp?setMonth:06];

? ? ? ? [comp?setDay:01];

? ? ? ? [comp?setYear:2001];

? ? ? ??NSCalendar?*myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];

? ? ? ??NSDate?*myDate1 = [myCal?dateFromComponents:comp];

? ? ? ??NSLog(@"myDate1 = %@",myDate1);

?

? ? ? ??//從已有日期獲取日期

? ? ? ??unsigned?units? =?NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;

? ? ? ??NSDateComponents?*comp1 = [myCal?components:units?fromDate:now];

? ? ? ??NSInteger?month = [comp1?month];

? ? ? ??NSInteger?year = [comp1?year];

? ? ? ??NSInteger?day = [comp1?day];

? ? ? ??//NSDateFormatter實現日期的輸出

? ? ? ??NSDateFormatter?*formatter = [[NSDateFormatteralloc]init];

? ? ? ? [formatter?setDateStyle:NSDateFormatterFullStyle];//直接輸出的話是機器碼

? ? ? ??//或者是手動設置樣式[formatter setDateFormat:@"yyyy-mm-dd"];

? ? ? ??NSString?*string = [formatter?stringFromDate:now];

? ? ? ??NSLog(@"string = %@",string);

? ? ? ??NSLog(@"formater = %@",formatter);

?

?

//獲取日期格式對象

- (NSDateFormatter?*)dateFormatter {

if?(dateFormatter?==?nil) {

dateFormatter?= [[NSDateFormatter?alloc]?init];

[dateFormatter?setDateStyle:NSDateFormatterMediumStyle];

[dateFormatter?setTimeStyle:NSDateFormatterNoStyle];

}

return?dateFormatter;

}

?

NSDate與NSDateFormatter的相關用法

?

1.NSDateFormatter配合NSDate與NSString之間的轉化
??NSDateFormatter有下面2個方法:
??- (NSString *)stringFromDate:(NSDate *)date;//NSDate轉NSString
??- (NSDate *)dateFromString:(NSString *)string;//NSString轉NSDate
?
e.g.
?NSString *dateString=@"1900-01-01";
?NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
?[dateFormatter setDateFormat:@"yyyy-MM-dd"];
?NSDate *date=[dateFormatter?dateFromString:dateString];
?[dateFormatter release];

?NSString轉NSDate與上面類似
?NSString *dateString=[dateFormatter dateFromString:[NSDate date]];

2.NSDateFormatter 的一些格式介紹
??[dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE為星期幾,EEE為周幾
??[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
??[dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 為xx月,一個d可以省去01日前的0

3.NSString轉NSDate少一天的解決辦法
?用下面這種格式化方式?
??1.[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];?

??2.
???NSCalendar *calendar = [NSCalendar currentCalendar];
???NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit |??????????????????????????????????NSYearCalendarUnit) fromDate:[NSDate date]];
???NSDate *todayDate = [calendar dateFromComponents:components];

轉載于:https://www.cnblogs.com/MyBlogZH/p/5828763.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/283882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/283882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/283882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務架構下分布式事務解決方案 —— 阿里GTS

1 微服務的發展 微服務倡導將復雜的單體應用拆分為若干個功能簡單、松耦合的服務,這樣可以降低開發難度、增強擴展性、便于敏捷開發。當前被越來越多的開發者推崇,很多互聯網行業巨頭、開源社區等都開始了微服務的討論和實踐。Hailo有160個不同服務構成&…

重要消息丨.NET Core 3.1 將于今年12月13日結束支持

點擊上方藍字關注我們(本文閱讀時間:5分鐘).NET Core 3.1 將于 2022 年 12 月 13 日結束支持。此后,Microsoft 將不再為 .NET Core 3.1 提供服務更新或技術支持。我們建議盡快遷移到 .NET 6。如果您在支持日期結束后仍在使用 .NET Core 3.1&a…

產品設計的三大原則

1.它有用嗎? 如果我們必須從這三個特性中選擇一個作為最重要的,那就是有用性。 首要的是,一個產品必須有用。如果它無用,其它任何東西都是不相關的,因為沒有人會需要它。很明顯,有用性和可享用性看上去一樣重要&#…

常用的17個運維監控系統

1. Zabbix Zabbix 作為企業級的網絡監控工具,通過從服務器,虛擬機和網絡設備收集的數據提供實時監控,自動發現,映射和可擴展等功能。 Zabbix的企業級監控軟件為用戶提供內置的Java應用服務器監控,硬件監控&#xff0c…

關于html-三角的制作

因為最近看到別人寫的不錯的樣式,所以就想自己實現,但是呢用到了一個三角形,所以稍微研究一下。效果是這樣的:注意是下邊那個淺色三角,感覺書簽的效果有木有。看著很有層次感。接下來就是實現了,利用border…

ABP中的數據過濾器

本文首先介紹了ABP內置的軟刪除過濾器(ISoftDelete)和多租戶過濾器(IMultiTenant),然后介紹了如何實現一個自定義過濾器,最后介紹了在軟件開發過程中遇到的實際問題,同時給出了解決問題的一個未必最優的思路。一.預定義過濾器ABP中的數據過濾…

ActiveMQ與spring整合

2019獨角獸企業重金招聘Python工程師標準>>> 1 生產者 第一步&#xff1a;引用相關的jar包。 <dependency> <groupId>org.springframework</groupId><artifactId>spring-jms</artifactId> </dependency> <dependency><…

最新遠程部署運維工具匯總

一&#xff0e;Puppet 轉載https://baike.baidu.com/item/puppet/5109503?fraladdin puppet是一種Linux、Unix、windows平臺的集中配置管理系統&#xff0c;使用自有的puppet描述語言&#xff0c;可管理配置文件、用戶、cron任務、軟件包、系統服務等。puppet把這些系統實體…

Kali Linux 2016.2初體驗使用總結

Kali Linux 2016.2初體驗使用總結Kali Linux官方于8月30日發布Kali Linux 2016的第二個版本Kali Linux 2016.2。該版本距離Kali Linux 2016.1版本發布&#xff0c;已經有7個月。在這期間&#xff0c;在Kali Linux 2016.2版本發布的這段時間&#xff0c;Kali Linux官方增補了94個…

Kafka入門教程:學習總結目錄索引

【Kafka】| 總結/Edison ZhouEdison總結了Kafka的學習征途系列&#xff0c;特意整理了一份目錄索引&#xff0c;希望對你有幫助。0Kafka學習路徑在學習Kafka的途中&#xff0c;我總結了一個系列的Kafka學習征途系列教程&#xff0c;它只選取了我認為最實用的部分整理出來&#…

javaweb學習中的路徑問題

1. 項目結構 2. 客戶端路徑 1. 超鏈接 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/…

步步為營-11-ListT泛型的簡單練習

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 集合簡單練習 {class Program{static void Main(string[] args){}private static void Test3(){//奇偶分揀,奇數在前偶數在后List<int>…

SPI 與 API的區別

背景 Java 中區分 API 和 SPI&#xff0c;通俗的講&#xff1a;API 和 SPI 都是相對的概念&#xff0c;他們的差別只在語義上&#xff0c;API 直接被應用開發人員使用&#xff0c;SPI 被框架擴展人員使用 理解 API &#xff08;Application Programming Interface&#xff09; …

JS---------正則表達式

2019獨角獸企業重金招聘Python工程師標準>>> 1.正則表達式的創建方式&#xff1a; 1.1 var reg new RegExp(pattern); 1.2 var reg /^正則規則$/ 2.正則規則&#xff1a; 2.1 [0-9] 代表數字 [A-Z] 代表大寫字母 [a-z] 代表小寫字母 [A-z] 代表字母 \w 查找單詞字…

關于緩存異常:緩存雪崩、擊穿、穿透的解決方案

關于緩存雪崩、擊穿、穿透的解決方案 前言緩存雪崩 緩存雪崩的原因解決方案緩存擊穿 解決方案緩存穿透 解決方案 布隆過濾器 布隆過濾器原理布隆過濾器如何使用在Java中使用布隆過濾器前言 關于緩存異常&#xff0c;我們常見的有三個問題&#xff1a;緩存雪崩、緩存擊穿、緩存穿…

RobotFramework 自動化測試實戰進階篇

工具 Robotframework, 采用PO設計模式 PO模型 PO模型即Page Objects&#xff0c;直譯意思就是“頁面對象”&#xff0c;通俗的講就是把一個頁面&#xff0c;或者說把一個頁面的某個區域當做一個對象&#xff0c;通過封裝這個對象可以實現調用。 PO設計的好處 代碼復用&…

Android6 0權限機制(一):介紹

本篇文章已授權微信公眾號 hongyangAndroid &#xff08;鴻洋&#xff09;獨家發布 Android6.0權限機制&#xff08;一&#xff09;&#xff1a;介紹 Android6.0權限機制&#xff08;二&#xff09;&#xff1a;封裝 Android6.0權限機制&#xff08;三&#xff09;&#xff1a;…

MAX10 ADC的一些基知識

MAX10 ADC 的一些知識 1、 MAX 10 內部集成的12bit SAR ADC的特點為&#xff1a; a、 采樣速率高達1Mhz. b、 模擬通道多達18個&#xff0c;單個ADC多達17個&#xff0c;雙ADC器件中有16個雙功能ADC通道&#xff0c;2個專用的ADC。 c、 提供單端測…

Blazor University (42)JavaScript 互操作 —— 生命周期和內存泄漏

原文鏈接&#xff1a;https://blazor-university.com/javascript-interop/calling-dotnet-from-javascript/lifetimes-and-memory-leaks/生命周期和內存泄漏源代碼[1]如果我們運行我們在從 Javascript 調用 .NET 中創建的應用程序并檢查瀏覽器控制臺窗口&#xff0c;我們會看到…

深入淺出聊布隆過濾器(Bloom Filter)

之前在網上看到過這么一段話&#x1f447; Data structures are nothing different. They are like the bookshelves of your application where you can organize your data. Different data structures will give you different facility and benefits. To properly use the …