iOS 時間日期總結

  1. 獲取時間戳
  • 單位秒,保留六位有效數字,格式如:1574068247.545103
NSDate *datenow = [NSDate date];
NSString *timeSp = [NSString stringWithFormat:@"%f", (double)[datenow timeIntervalSince1970]];
複製代碼
  • 單位秒,整數,格式如:1574068265
NSDate *datenow = [NSDate date];
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
複製代碼
  • 單位毫秒,整數,不精確,後面直接補三個0,格式如:1574068602000
NSDate *datenow = [NSDate date];
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]*1000];
複製代碼
  • 單位毫秒,整數,精確,格式如:1574070082387
// 獲取當前時間0秒後的時間
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0];
// *1000 是精確到毫秒,不乘就是精確到秒
NSTimeInterval time = [date timeIntervalSince1970]*1000;
NSString *timeStr = [NSString stringWithFormat:@"%.0f", time];
複製代碼
  1. 時間戳轉日期
// 傳入的時間戳timeStr若是是精確到毫秒的記得要/1000
NSTimeInterval timeInterval = [timeStr doubleValue]/1000;
NSDate *detailDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 實例化一個NSDateFormatter對象,設定時間格式,這裏能夠設置成本身須要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss SS"];
NSString *dateStr = [dateFormatter stringFromDate:detailDate];
複製代碼
  1. 兩個日期比較
//1.將這兩個時間戳轉換成日期
NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:1451047216];
NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:1451847216];
//2.開始比較
// 比較date1是否是比date2早——>會返回一個比較早的日期
NSDate *date3 = [date1 earlierDate:date2];
NSLog(@"比較早的日期:%@",date3);
//比較兩個日期誰比誰晚
NSDate *date4 = [date1 laterDate:date2];
NSLog(@"比較晚的日期:%@",date4);
//  比較兩個日期 是否是相同 ——>返回值BOOL類型
BOOL result = [date1 isEqualToDate:date2];
NSLog(@"%d",result);
複製代碼
  • 能夠解決跨年、跨月、平閏年時間處理問題
// 100天后
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 * 100];
NSDate *nowDate = [NSDate date];
// 日期升序
if ([nowDate compare:date] == NSOrderedAscending) {
    NSLog(@"若是打印,nowDate比ndate時間早,如nowDate=2019-11-18, ndate=2020-02-26");
}
複製代碼
  1. 日曆組件NSCalendar
NSDate *nowDate = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
// 初始化日曆組件,能夠選擇須要的組件
NSDateComponents *comps = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday|NSCalendarUnitWeekdayOrdinal|NSCalendarUnitWeekOfMonth|NSCalendarUnitWeekOfYear|NSCalendarUnitYearForWeekOfYear fromDate:nowDate];
// 獲得:今天是星期幾,返回日期的工做日索引(1 =星期日,2 =星期一,…,7 =星期六)
NSInteger weekDay = [comps weekday];
// 獲得:今天是幾號
NSInteger day = [comps day];
// 獲得:一年中的第幾周
NSInteger weekOfYear = [comps weekOfYear];
複製代碼
  1. 常見NSDateFormatter格式 能夠使用如下dateFormatter符號單獨格式化,拿到須要的數據進行處理
符號 說明
y/yyy/yyyy/Y/YYY/YYYY/u/uu/uuu/uuuu/U/UUU/UUUU 完整的年份
yy/YY/UU 2個數字的年份
M/MM/L/LL 1~12 第幾月
MMM/LLL Jan/Feb/Mar/Apr/May/Jun/Jul/Aug/Sep/Oct/Nov/Dec 月份簡寫
MMMM/LLLL January/February/March/April/May/June/July/August/September/October/November/December 月份全稱
d 1~31 (月份的第幾天,帶0)
D 1~366 (年份的第幾天,帶0)
e/c/cc 1~7 (一週的第幾天,週日爲1,帶0)
E~EEE/eee/ccc Sun/Mon/Tue/Wed/Thu/Fri/Sat (星期簡寫)
EEEE/eeee/cccc Sunday/Monday/Tuesday/Wednesday/Thursday/Friday/Saturday (星期全拼)
H 0~23 帶0的時,24小時制
h 1~12 帶0的時,12小時制
k 1~24 一天中的小時數,帶0的時,24小時制
K 0~11 帶0的時,12小時制
m 0~59 分鐘
s 0~59 秒數
SSS 毫秒
a AM/PM (上午/下午)
A 0~86399999 (一天的第幾微秒)
F 1~5 每個月的第幾周
w 1~53 一年的第幾周,一週的開始爲週日,第一週從去年的最後一個週日起算
W 1~5 一個月的第幾周,一週的開始爲週日
q/qq/Q/QQ 1~4 第幾季度
qqq/QQQ Q1/Q2/Q3/Q4 季度簡寫
qqqq/QQQQ 1st quarter/2nd quarter/3rd quarter/4th quarter 季度全拼
z~zzz 指定GMT時區的縮寫,GMT+8
zzzz/vvvv 指定GMT時區的名稱,China Standard Time
Z~ZZZ 指定GMT時區的縮寫,+0800
ZZZZ 指定GMT時區的縮寫,GMT+08:00
v/VVVV 指定GMT時區的名稱,China mainland Time
VV 指定GMT時區的名稱,Asia/Shanghai
VVV 指定GMT時區的名稱,Shanghai

附:個人博客地址git

相關文章
相關標籤/搜索