1旋奢、獲取當前時間
//獲取當前時間
- (NSString *)currentDateStr{
NSDate *currentDate = [NSDate date];//獲取當前時間,日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 創(chuàng)建一個時間格式化對象
[dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS "];//設定時間格式,這里可以設置成自己需要的格式
NSString *dateString = [dateFormatter stringFromDate:currentDate];//將時間轉(zhuǎn)化成字符串
return dateString;
}
2然痊、獲取當前時間戳
pragma mark 當前時間戳
+ (NSString *)nowTimeInterval {
// 現(xiàn)在的時間戳
// 獲取當前時間0秒后的時間
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:0];
// *1000 是精確到毫秒至朗,不乘就是精確到秒
NSTimeInterval time = [date timeIntervalSince1970]*1000;
NSString *timeStr = [NSString stringWithFormat:@"%.0f", time];
return timeStr;
}
3、時間戳 轉(zhuǎn)日期
#pragma mark 時間戳 轉(zhuǎn)日期 (yyyy-MM-dd)
+ (NSString *)timeWithYearMonthDayCountDown:(NSString *)timestamp {
// 時間戳轉(zhuǎn)日期
// 傳入的時間戳timeStr如果是精確到毫秒的記得要/1000
NSTimeInterval timeInterval = [timestamp doubleValue]/1000;
NSDate *detailDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 實例化一個NSDateFormatter對象剧浸,設定時間格式锹引,這里可以設置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateStr = [dateFormatter stringFromDate:detailDate];
return dateStr;
}
4矗钟、字符串轉(zhuǎn)時間戳
// 字符串轉(zhuǎn)時間戳 如:2017-4-10 17:15:10 (精確到毫秒*1000)
+ (NSString *)getTimeStrWithString:(NSString *)str {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 創(chuàng)建一個時間格式化對象
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; //設定時間的格式
NSDate *tempDate = [dateFormatter dateFromString:str];//將字符串轉(zhuǎn)換為時間對象
NSString *timeStr = [NSString stringWithFormat:@"%ld", (long)[tempDate timeIntervalSince1970]*1000];//字符串轉(zhuǎn)成時間戳,精確到毫秒*1000
return timeStr;
}
5、時間戳 轉(zhuǎn)換成 (天 時 分 秒)
#pragma mark 轉(zhuǎn)換成 (天 時 分 秒)
+ (NSString *)timeFormatted:(NSInteger)totalSeconds {
// NSInteger seconds = totalSeconds % 60;
// NSInteger minutes = (totalSeconds / 60) % 60;
// NSInteger hours = totalSeconds / 3600 % 24;
// NSInteger day = totalSeconds / 3600 / 24;
NSInteger day = (totalSeconds/(3600*24));
NSInteger hour = ((totalSeconds-day*24*3600)/3600);
NSInteger minute = (totalSeconds-day*24*3600-hour*3600)/60;
NSInteger second = totalSeconds - day*24*3600 - hour*3600 - minute*60;
return [NSString stringWithFormat:@"%ld天%ld時%ld分%ld秒", day, hour, minute, second];
}
6嫌变、時間戳轉(zhuǎn)日期
#pragma mark 時間戳 轉(zhuǎn)日期 (yyyy-MM-dd HH:mm:ss SS)
// 時間戳轉(zhuǎn)時間,時間戳為13位是精確到毫秒的吨艇,10位精確到秒
+ (NSString *)dateWithTimeInterval:(NSString *)timeStr {
// 傳入的時間戳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];
return dateStr;
}
7东涡、字符串轉(zhuǎn)時間戳
// 字符串轉(zhuǎn)時間戳 如:2017-4-10 17:15:10
- (NSString *)getTimeStrWithString:(NSString *)str{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 創(chuàng)建一個時間格式化對象
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; //設定時間的格式
NSDate *tempDate = [dateFormatter dateFromString:str];//將字符串轉(zhuǎn)換為時間對象
NSString *timeStr = [NSString stringWithFormat:@"%ld", (long)[tempDate timeIntervalSince1970]*1000];//字符串轉(zhuǎn)成時間戳,精確到毫秒*1000
return timeStr;
}
8、獲取某一天是星期幾
// 1倘待、獲取某一天是星期幾
+(NSString *)getWeekDayFordate:(NSTimeInterval)data{
NSArray *weekday = [NSArray arrayWithObjects:[NSNull null], @"7",@"1", @"2", @"3", @"4", @"5", @"6", nil];
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:data];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekday fromDate:newDate];
NSString *weekStr = [weekday objectAtIndex:components.weekday];
return weekStr;
}
#pragma mark 1疮跑、獲取某一天是星期幾
+(NSString *)getWeekDayForDateTimeStamp:(NSTimeInterval)timeStamp{
NSArray *weekday = [NSArray arrayWithObjects:[NSNull null], @"周日",@"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitWeekday fromDate:newDate];
NSString *weekStr = [weekday objectAtIndex:components.weekday];
return weekStr;
}
9、獲取當月的天數(shù)
+(NSInteger)getNumberOfDaysInCurrentMonth
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:[NSDate date]];
NSUInteger numberOfDaysInMonth = range.length;
return numberOfDaysInMonth;
}
10凸舵、剛剛祖娘、幾分鐘之前、幾小時之前啊奄、幾天渐苏、幾月、幾年之前
+ (NSString *)jk_time1TurnStringTimestamp:(NSString *)timestamp
{
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timestamp doubleValue]];
NSTimeInterval timeInterval = [date timeIntervalSinceNow];
NSInteger seconds = round(timeInterval);
if (seconds < 0) {
return @"";
}
if (seconds < 60) {
return @"剛剛";
}else if (seconds < 3600) {
return [NSString stringWithFormat:@"%ld分鐘之前",seconds/60];
}else if (seconds < 3600*24){
return [NSString stringWithFormat:@"%ld小時之前",seconds/(3600)];
}else if (seconds < (3600*24*30)){
return [NSString stringWithFormat:@"%ld天之前",seconds/(3600*24)];
}else if (seconds < (3600*24*30*12)){
return [NSString stringWithFormat:@"%ld月之前",seconds/(3600*24*30)];
}else{
return [NSString stringWithFormat:@"%ld年之前",seconds/(3600*24*30*12)];
}
}
11菇夸、兩個日期NSDate之間相隔多少天(月整以、年)
1.根據(jù)兩個日期(NSDate),算出它們相差多少天峻仇。
解決方法
NSCalendar類提供了計算差值的接口,可以計算兩個日期相差多少年月日時分秒等
代碼
//創(chuàng)建兩個日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [dateFormatter dateFromString:@"2017-07-26"];
NSDate *endDate = [dateFormatter dateFromString:@"2017-09-01"];
//利用NSCalendar比較日期的差異
NSCalendar *calendar = [NSCalendar currentCalendar];
/**
* 要比較的時間單位,常用如下,可以同時傳:
* kCFCalendarUnitYear : 年
* kCFCalendarUnitMonth : 月
* NSCalendarUnitDay : 天
* kCFCalendarUnitHour : 小時
* kCFCalendarUnitMinute : 分鐘
* kCFCalendarUnitSecond : 秒
*/
NSCalendarUnit unit = NSCalendarUnitDay;//只比較天數(shù)差異
//比較的結(jié)果是NSDateComponents類對象
NSDateComponents *delta = [calendar components:unit fromDate:startDate toDate:endDate options:0];
//打印
NSLog(@"%@",delta);
//獲取其中的"天"
NSLog(@"%ld",delta.day);
打印結(jié)果
image
注意事項
1邑商、如果同時比較月摄咆、天的時候,結(jié)果是N個月零N天人断,不會再是37天吭从,例如
NSCalendarUnit unit1 = NSCalendarUnitDay | NSCalendarUnitMonth;//同時比較天數(shù)、月份差異
//比較的結(jié)果是NSDateComponents類對象
NSDateComponents *delta1 = [calendar components:unit1 fromDate:startDate toDate:endDate options:0];
//打印
NSLog(@"%@",delta1);
打印結(jié)果
image
即1個月零6天恶迈。
2涩金、在遇到2月,閏年等不標準時期暇仲,這種方式的運算結(jié)果非常準確步做。
12、返回當前時間的: 年奈附、月全度、日、小時斥滤、分鐘将鸵、秒
#pragma mark -- 返回當前時間的: 年勉盅、月、日顶掉、小時草娜、分鐘、秒 --
+ (NSDictionary *)dateCalendarReturnYear_Month_Day_Hour_Minute_Second {
/** iOS 獲取當前的年痒筒、月宰闰、日、小時凸克、分鐘议蟆、秒 */
// 獲取當前的date
NSDate *nowDate = [NSDate date];
// 使用NSCalendar 計算詳細的時間
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = kCFCalendarUnitYear | //年
kCFCalendarUnitMonth | //月份
NSCalendarUnitDay | //日
kCFCalendarUnitHour | //小時
kCFCalendarUnitMinute | //分鐘
kCFCalendarUnitSecond; // 秒
NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:nowDate];
NSInteger year = [dateComponent year];
NSInteger month = [dateComponent month];
NSInteger day = [dateComponent day];
NSInteger hour = [dateComponent hour];
NSInteger minute = [dateComponent minute];
NSInteger second = [dateComponent second];
NSDictionary *dateDic = @{
@"year":[NSString stringWithFormat:@"%ld", year],
@"month":[NSString stringWithFormat:@"%ld", month],
@"day":[NSString stringWithFormat:@"%ld", day],
@"hour":[NSString stringWithFormat:@"%ld", hour],
@"minute":[NSString stringWithFormat:@"%ld", minute],
@"second":[NSString stringWithFormat:@"%ld", second]
};
return dateDic;
}
13、獲取當前時間~未來一周的數(shù)據(jù)萎战, 數(shù)組包含 周幾咐容、日期幾月幾號:[NSDate dateWithTimeIntervalSinceNow:0]; // 如果是0 的話,就是當前時間
/** 數(shù)組包含 周幾蚂维、日期幾號 */
- (NSArray *)getWeekDateArray {
// 獲取當前時間開始戳粒,未來一周的時間數(shù)組,只要日期:幾日
NSMutableArray *weekArr = [NSMutableArray arrayWithCapacity:0];
for (int i = 0; i < 7; i++) {
//從現(xiàn)在開始的24小時
NSTimeInterval currentTimeInterval = i * 24*60*60;
NSDate *curDate = [NSDate dateWithTimeIntervalSinceNow:currentTimeInterval]; // 如果是0 的話虫啥,就是當前時間
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd"];
NSString *dateStr = [dateFormatter stringFromDate:curDate];//幾月幾號
//NSString *dateStr = @"5月31日";
NSDateFormatter *weekFormatter = [[NSDateFormatter alloc] init];
[weekFormatter setDateFormat:@"EEEE"];//星期幾 @"HH:mm 'on' EEEE MMMM d"];
NSString *weekStr = [weekFormatter stringFromDate:curDate];
//轉(zhuǎn)換文案
weekStr = [self transWeekName:weekStr];
//組合時間
NSString *strTime = [NSString stringWithFormat:@"%@-%@",dateStr,weekStr];
NSLog(@"%@", strTime);
NSDictionary *dateDic = @{
@"week":weekStr,
@"day":dateStr
};
[weekArr addObject:dateDic];
}
return [weekArr copy];
}
- (NSString *)transWeekName:(NSString *)orrignWeekName {
NSString *targetWeekName = @"";
//轉(zhuǎn)換文案
if ([orrignWeekName isEqualToString:@"Monday"]) {
targetWeekName = @"周一";
}
else if ([orrignWeekName isEqualToString:@"Tuesday"]) {
targetWeekName = @"周二";
}
else if ([orrignWeekName isEqualToString:@"Wednesday"]) {
targetWeekName = @"周三";
}
else if ([orrignWeekName isEqualToString:@"Thursday"]) {
targetWeekName = @"周四";
}
else if ([orrignWeekName isEqualToString:@"Friday"]) {
targetWeekName = @"周五";
}
else if([orrignWeekName isEqualToString:@"Saturday"]) {
targetWeekName = @"周六";
} else { // Sunday
targetWeekName = @"周日";
}
return targetWeekName;
}