首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS NSDateFormatter 日期格式轉換實戰:從標準格式到自定義月份名稱輸出

     編輯:程式設計綜合問答

需求:將標準 NSDate(如 2001-01-01 00:00:00 +0000)轉換為 January, 01 2013 04:00:00 格式。

關鍵步驟:雙重 Formatter 鏈式轉換

  1. 若輸入為字符串,先用 解析 Formatter 轉為 NSDate。
  2. 再用 輸出 Formatter 轉為目標字符串。

完整代碼

NSString *inputStr = @"2012-09-15 00:11:59";

// 1. 解析輸入字符串 -> NSDate
NSDateFormatter *parser = [[NSDateFormatter alloc] init];
[parser setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // 注意:24小時制用 HH
NSDate *date = [parser dateFromString:inputStr];

// 2. NSDate -> 目標格式字符串
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM, dd yyyy HH:mm:ss"]; // MMMM = 全寫月份名
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; // 關鍵:指定英文月份

NSString *output = [formatter stringFromDate:date];
NSLog(@"Result: %@", output); // September, 15 2012 00:11:59

常見格式符號對照表

符號含義示例
yyyy年(4位)2013
MMMM月份全稱January
MMM月份縮寫Jan
dd日(2位)01
HH小時(24制,2位)04
hh小時(12制,2位)04
mm分鐘00
ss秒00

避坑指南

  • 必須設置 locale:否則 MMMM 輸出系統語言(中文「一月」),導致解析/顯示不一致。
  • HH vs hh:24小時制用 HH,12小時制用 hh(需配合 a AM/PM)。
  • 線程安全:NSDateFormatter 非線程安全,高頻調用請緩存或用 NSThread 局部存儲。
  • iOS 10+ 推薦:使用 ISO8601DateFormatter 處理標準格式,性能更優。

掌握雙重 Formatter 模式與 locale 設置,精準控制日期輸出格式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved