代碼可能有點亂 不過應該不影響使用 這些應該基本上能知足大部分用戶對於時間的處理需求數組
DateTimeHelper.h文件 網絡
#import <Foundation/Foundation.h>spa
@interface DateTimeHelper : NSObject.net
//時間戳轉化成字符串格式日期 YYYY-MM-dd HH:mm
+(NSString*)dateTimeFromTimesp:(double)timeStamp;component
//時間戳轉化成字符串格式日期 YYYY-MM-dd HH:mm:ss
+(NSString*)dateTimeFromTimesp1:(double)timeStamp;orm
//時間戳轉化成字符串格式日期 YYYY-MM-dd
+(NSString*)dateTimeFromTimespEx:(double)timeStamp;字符串
//時間戳轉化成字符串格式日期 YYYY年MM月dd日 ss時mm分
+(NSString*)dateTimeFromTimespNYR:(double)timeStamp;get
//將時間戳轉化成double
+(double)dateToTimesp:(NSDate*)aDate;input
//獲取當前日期是 幾號
+(NSString*)currentDay;string
//相對時間 N年N月N往後的日期 -數能夠表示n年前的日期
+ (NSString *)relativeTime:(NSString *)dateStr years:(NSInteger)years month:(NSInteger)month day:(NSInteger)day;
//將秒處理成格式化的時間
+ (NSString *)getDateFormatWithStringSeconds:(NSString *)timerStr;
//獲取當前系統時間格式化 參數爲一個格式YYYY-MM-dd HH:mm:ss; 返回的格式和這個保持一致
+(NSString*)getCurrentSystemTime:(NSString*)formart;
//獲取當前網絡時間時間(中國)並轉換成年月日分開 返回只根據須要本身修改
+(NSString*)getTimeSegment;
//將時間格式格式化成字符串《=》nsdate 轉換成須要的string
+(NSString *)getStringFromDate:(NSDate*)inputDate format:(NSString *)format;
+ (NSTimeInterval)getDateWithReferenceRetureIntervalFrom1970:(NSString *)reference format:(NSString *)format;
//傳入一個格式化過得字符串 返回與當前時間的間隔( 秒) reference 爲 時間字符串 參數爲一個reference字符串的 格式根據須要本身填寫(YYYY-MM-dd HH:mm:ss);
+ (NSTimeInterval)getDateWithReferenceRetureIntervalToNow:(NSString *)reference format:(NSString *)format;
//返回一個 NSTimeInterval 秒計算 剛剛 1分鐘前 仍是一週前..
+(NSString *)getTimeString:(NSTimeInterval)time;
DateTimeHelper.m文件
#import "DateTimeHelper.h"
#define vision [[[UIDevice currentDevice]systemVersion] integerValue]<8.0
@implementation DateTimeHelper
//時間戳轉化成字符串格式日期
+(NSString*)dateTimeFromTimesp:(double)timeStamp
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; // ----------設置你想要的格式,hh與HH的區別:分別表示12小時制,24小時制
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
return confromTimespStr;
}
+(NSString*)dateTimeFromTimesp1:(double)timeStamp
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // ----------設置你想要的格式,hh與HH的區別:分別表示12小時制,24小時制
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
return confromTimespStr;
}
//時間戳轉化成字符串格式日期 YYYY-MM-dd
+(NSString*)dateTimeFromTimespEx:(double)timeStamp
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd"]; // ----------設置你想要的格式,hh與HH的區別:分別表示12小時制,24小時制
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
return confromTimespStr;
}
//時間戳轉化成字符串格式日期 YYYY年MM月dd日 ss時mm分
+(NSString*)dateTimeFromTimespNYR:(double)timeStamp
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy年MM月dd 23時59分"]; // ----------設置你想要的格式,hh與HH的區別:分別表示12小時制,24小時制
NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
return confromTimespStr;
}
+(double)dateToTimesp:(NSDate*)aDate
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd"];
return [aDate timeIntervalSince1970];
// 時間轉時間戳的方法:
// NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[aDate timeIntervalSince1970]];
}
//獲取當前日期是 幾號
+(NSString*)currentDay
{
//獲取當前時間
NSDate *now = [NSDate date];
// NSLog(@"now date is: %@", now);
NSCalendar *calendar = [NSCalendar currentCalendar];
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];
int day = (int)[dateComponent day];
return [NSString stringWithFormat:@"%d", day];
// int year = [dateComponent year];
// int month = [dateComponent month];
// int hour = [dateComponent hour];
// int minute = [dateComponent minute];
// int second = [dateComponent second];
}
//相對時間 N年N月N往後的日期 -數能夠表示n年前的日期
+ (NSString *)relativeTime:(NSString *)dateStr years:(NSInteger)years month:(NSInteger)month day:(NSInteger)day{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date1 = [dateFormatter dateFromString:dateStr];
NSLog(@"%@", date1);
NSDateComponents * components = [[NSDateComponents alloc] init];
components.year = years;
components.month = month;
components.day = day;
NSCalendar * calendar = [NSCalendar currentCalendar];
//NSDate * currentDate = [NSDate date];
NSDate * nextData = [calendar dateByAddingComponents:components toDate:date1 options:NSCalendarMatchStrictly];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString * str = [formatter stringFromDate:nextData];
NSLog(@"%@",str);
return str;
}
//將字符串秒處理成格式化的時間
+ (NSString *)getDateFormatWithStringSeconds:(NSString *)timerStr {
//轉化爲Double
double t = [timerStr doubleValue];
//計算出距離1970的NSDatereference
NSDate *date = [NSDate dateWithTimeIntervalSince1970:t];
//轉化爲 時間格式化字符串
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//轉化爲 時間字符串
return [df stringFromDate:date];
}
//獲取當前系統時間格式化過得
+(NSString*)getCurrentSystemTime:(NSString *)formart{
NSDate * senddate=[NSDate date];
NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
if(formart.length==0||formart==nil){
[dateformatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
}else{
[dateformatter setDateFormat:formart];
}
NSString * locationString=[dateformatter stringFromDate:senddate];
// NSLog(@"locationString:%@",locationString);
return locationString;
}
//獲取當前時間並轉換成年月日分開
+(NSArray*)getTimeSegment{
NSCalendar *calendar=nil;
NSInteger unitFlags=0;
// if(vision){
// calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//
// NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
//
// NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
// }else{
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday |
NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
//}
NSDate *now=[NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps = [calendar components:unitFlags fromDate:now];
NSInteger year=[comps year];
NSInteger month = [comps month];
NSInteger day = [comps day];
NSInteger hour = [comps hour];
NSInteger min = [comps minute];
NSInteger sec = [comps second];
//返回的 數組
NSArray *ary=@[@(year),@(month),@(day),@(hour),@(min),@(sec)];
// NSLog(@"--%ld-%ld-%ld %ld:%ld:%ld",year,month,day,hour,min,sec);
// return [NSString stringWithFormat:@"%ld-%ld-%ld %ld:%ld:%ld",year,month,day,hour,min,sec];
return ary;
}
//將時間格式格式化成字符串
+(NSString *)getStringFromDate:(NSDate*)inputDate format:(NSString *)format{
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
// [outputFormatter setLocale:[NSLocale currentLocale]];
[outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
if(format.length==0||format==nil){
[outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
}else{
[outputFormatter setDateFormat:format];
}
[outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *str = [outputFormatter stringFromDate:inputDate];
//NSLog(@"testDate:%@", str);
return str;
}
////傳入一個格式化過得字符串 返回 一個時間字符串與1970年的( 秒)
+ (NSTimeInterval)getDateWithReferenceRetureIntervalFrom1970:(NSString *)reference format:(NSString *)format{
//將字符串轉換成時間格式 一下獲取的所有是北京時間
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
if(format.length==0||format==nil){
[inputFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
}else{
[inputFormatter setDateFormat:format];
}
//[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.0"];
NSDate* inputDate = [inputFormatter dateFromString:reference];
// NSLog(@"date = %@",inputDate);
//獲取兩個時間之間的間隔
//NSDate *now=[NSDate date];
NSTimeInterval secondsBetweenDates=[inputDate timeIntervalSince1970];
//[now timeIntervalSinceDate:inputDate];
//NSLog(@"秒= %lf",secondsBetweenDates);
return secondsBetweenDates;
}
//傳入一個格式化過得字符串 返回 一個時間字符串與當前時間的間隔( 秒)
+ (NSTimeInterval)getDateWithReferenceRetureIntervalToNow:(NSString *)reference format:(NSString *)format{
//將字符串轉換成時間格式 一下獲取的所有是北京時間
/*
傳入的時間字符串 20150208010203 則[inputFormatter setDateFormat:@"yyyyMMddHHmmss"];
傳入的時間字符串 2015-02-08 01:02:03 則[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
*/
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
if(format.length==0||format==nil){
[inputFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
}else{
[inputFormatter setDateFormat:format];
}
// [inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.0"];
NSDate* inputDate = [inputFormatter dateFromString:reference];
// NSLog(@"date = %@",inputDate);
//獲取兩個時間之間的間隔
NSDate *now=[NSDate date];
NSTimeInterval secondsBetweenDates= [now timeIntervalSinceDate:inputDate];
// NSLog(@"secondsBetweenDates= %lf",secondsBetweenDates);
return secondsBetweenDates;
}
//返回一個字符串 剛剛 1分鐘前 ...
+(NSString *)getTimeString:(NSTimeInterval)segmentTime{
NSInteger allTime=segmentTime;
NSInteger year=60*60*24*365;
NSInteger month = 60*60*24*30;
NSInteger day = 60*60*24;
NSInteger hour = 60*60;
NSInteger min = 60;
NSString *str=nil;
if (allTime<min) {
str=[NSString stringWithFormat:@"剛剛"];
}else if (allTime<hour){
str=[NSString stringWithFormat:@"%ld分以前",allTime/min];
}else if (allTime<day){
str=[NSString stringWithFormat:@"%ld小時以前",allTime/hour];
}else if (allTime<month){
str=[NSString stringWithFormat:@"%ld天以前",allTime/day];
}else if (allTime<year){
str=[NSString stringWithFormat:@"%ld月以前",allTime/month];
}else{
str=[NSString stringWithFormat:@"%ld年以前",allTime/year];
}
//NSLog(@"%@",str);
return str;
}
@end