123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- //
- // TimeUtil.m
- // wq
- //
- // Created by berwin on 13-7-20.
- // Copyright (c) 2013年 Weqia. All rights reserved.
- //
- #import "TimeUtil.h"
- #import "JXMyTools.h"
- @implementation TimeUtil
- + (NSString*)getTimeStr:(long) createdAt
- {
- // Calculate distance time string
- //
- NSString *timestamp;
- time_t now;
- time(&now);
-
- int distance = (int)difftime(now, createdAt);
- if (distance < 0) distance = 0;
-
- if (distance < 60) {
- timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "second ago" : "seconds ago"];
- }
- else if (distance < 60 * 60) {
- distance = distance / 60;
- timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "minute ago" : "minutes ago"];
- }
- else if (distance < 60 * 60 * 24) {
- distance = distance / 60 / 60;
- timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "hour ago" : "hours ago"];
- }
- else if (distance < 60 * 60 * 24 * 7) {
- distance = distance / 60 / 60 / 24;
- timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "day ago" : "days ago"];
- }
- else if (distance < 60 * 60 * 24 * 7 * 4) {
- distance = distance / 60 / 60 / 24 / 7;
- timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "week ago" : "weeks ago"];
- }
- else {
- static NSDateFormatter *dateFormatter = nil;
- if (dateFormatter == nil) {
- dateFormatter = [[NSDateFormatter alloc] init];
- [dateFormatter setDateStyle:NSDateFormatterShortStyle];
- [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
- }
-
- NSDate *date = [NSDate dateWithTimeIntervalSince1970:createdAt];
- timestamp = [dateFormatter stringFromDate:date];
- }
- return timestamp;
- }
- + (NSString*)getTimeStr1:(long long)time
- {
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
- NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d %02d:%02d",[component year],[component month],[component day],[component hour],[component minute]];
- return string;
- }
- + (NSString*)getTimeStr1Short:(long long)time
- {
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
- NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d",[component year],[component month],[component day]];
- return string;
- }
- + (NSString*)getMDStr:(long long)time
- {
-
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
- NSString * string=[NSString stringWithFormat:@"%d%@%d%@",[component month],Localized(@"JX_Month"),[component day],Localized(@"JX_Day1")];
- return string;
- }
- +(NSDateComponents*) getComponent:(long long)time
- {
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
- return component;
- }
- +(NSString*) getTimeStrStyle1:(long long)time
- {
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitWeekOfMonth|NSCalendarUnitWeekday;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
- NSInteger year=[component year];
- NSInteger month=[component month];
- NSInteger day=[component day];
-
- NSInteger hour=[component hour];
- NSInteger minute=[component minute];
-
- NSDate * today=[NSDate date];
- component=[calendar components:unitFlags fromDate:today];
-
- NSInteger t_year=[component year];
- NSInteger t_day = [component day];
-
- NSString*string=nil;
- // NSString *timeString = nil;
- long long now=[today timeIntervalSince1970];
-
- long distance=now-time;
-
- if(distance<60){
- string=Localized(@"TimeUtil_Utill");
- }else if(distance<60*30){
- if ([g_constant.sysLanguage isEqualToString:@"en"]) {
- string=[NSString stringWithFormat:@"%@ %ld %@",Localized(@"JX_Before"),distance/60,Localized(@"JX_Min")];
-
- }else{
- string=[NSString stringWithFormat:@"%ld %@%@",distance/60,Localized(@"JX_Min"),Localized(@"JX_Before")];
- }
-
- }else if(distance<60*60*24){
-
- if (day == t_day) {
- string = [NSString stringWithFormat:@"%d:%02d",hour,minute];
- }else {
- string = [NSString stringWithFormat:@"%@ %d:%02d",Localized(@"YESTERDAY"),hour,minute];
- }
-
-
- // if ([[JXMyTools getCurrentSysLanguage] isEqualToString:@"en"]) {
- //
- // timeString = nil;
- // timeString = [NSString stringWithFormat:@"%@",Localized(@"JX_Hour")];
- // if (distance/60.0/60.0 > 1.0) {//hours
- // timeString = [timeString stringByAppendingString:@"s"];
- // }
- // string=[NSString stringWithFormat:@"%@ %ld %@",Localized(@"JX_Before"),distance/60/60,timeString];
- //
- // }else{
- // string=[NSString stringWithFormat:@"%ld %@%@",distance/60/60,Localized(@"JX_Hour"),Localized(@"JX_Before")];
- // }
- //string=[NSString stringWithFormat:@"before %ld hour",distance/60/60];
- }else if(distance<60*60*24 * 2){
- if (t_day - day == 1) {
- string = [NSString stringWithFormat:@"%@ %d:%02d",Localized(@"YESTERDAY"),hour,minute];
- }else {
- string = [NSString stringWithFormat:@"%@ %d:%02d",Localized(@"BEFORE_YESTERDAY"),hour,minute];
- }
- }else if(distance<60*60*24 * 3){
- if (t_day - day == 2) {
- string = [NSString stringWithFormat:@"%@ %d:%02d",Localized(@"BEFORE_YESTERDAY"),hour,minute];
- }else {
- string=[NSString stringWithFormat:@"%02d-%02d %d:%02d",month,day,hour,minute];
- }
-
- }
- // else if(distance<60*60*24*7){
- // if ([[JXMyTools getCurrentSysLanguage] isEqualToString:@"en"]) {
- // timeString = nil;
- // timeString = [NSString stringWithFormat:@"%@",Localized(@"JX_Day")];
- // if (distance/60.0 > 1.0) {
- // timeString = [timeString stringByAppendingString:@"s"];
- // }
- // string=[NSString stringWithFormat:@"%@ %ld %@",Localized(@"JX_Before"),distance/60/60/24,timeString];
- // }else{
- // string=[NSString stringWithFormat:@"%ld %@%@",distance/60/60/24,Localized(@"JX_Day"),Localized(@"JX_Before")];
- // }
- // //string=[NSString stringWithFormat:@"before %ld day",distance/60/60/24];
- // }
- else if(year==t_year){
- string=[NSString stringWithFormat:@"%02d-%02d %d:%02d",month,day,hour,minute];
- }else{
- string=[NSString stringWithFormat:@"%d-%d-%d",year,month,day];
- }
-
- return string;
-
- }
- +(NSString*) getTimeStrStyle2:(long long)time
- {
-
- NSDate * date=[NSDate dateWithTimeIntervalSince1970:time];
- NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
- NSInteger unitFlags = NSCalendarUnitMonth | NSCalendarUnitDay|NSCalendarUnitYear|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitWeekOfMonth|NSCalendarUnitWeekday;
- NSDateComponents * component=[calendar components:unitFlags fromDate:date];
-
- NSInteger year=[component year];
- NSInteger month=[component month];
- NSInteger day=[component day];
- NSInteger hour=[component hour];
- NSInteger minute=[component minute];
- NSInteger week=[component weekOfMonth];
- NSInteger weekday=[component weekday];
-
- NSDate * today=[NSDate date];
- component=[calendar components:unitFlags fromDate:today];
-
- NSInteger t_year=[component year];
- NSInteger t_month=[component month];
- NSInteger t_day=[component day];
- NSInteger t_week=[component weekOfMonth];
-
- NSString*string=nil;
- if(year==t_year&&month==t_month&&day==t_day)
- {
- if(hour<6&&hour>=0)
- string=[NSString stringWithFormat:@"%d:%02da.m",hour,minute];
- else if(hour>=6&&hour<12)
- string=[NSString stringWithFormat:@"%d:%02da.m",hour,minute];
- else if(hour>=12&&hour<18)
- string=[NSString stringWithFormat:@"%d:%02dp.m",hour,minute];
- else
- string=[NSString stringWithFormat:@"%d:%02dp.m",hour,minute];
- }
- else if(year==t_year&&week==t_week)
- {
- NSString * daystr=nil;
- switch (weekday) {
- case 1:
- daystr=Localized(@"TimeUtil_Sun");
- break;
- case 2:
- daystr=Localized(@"TimeUtil_Mon");
- break;
- case 3:
- daystr=Localized(@"TimeUtil_Tue");
- break;
- case 4:
- daystr=Localized(@"TimeUtil_Wed");
- break;
- case 5:
- daystr=Localized(@"TimeUtil_Thu");
- break;
- case 6:
- daystr=Localized(@"TimeUtil_Fri");
- break;
- case 7:
- daystr=Localized(@"TimeUtil_Sat");
- break;
- default:
- break;
- }
- string=[NSString stringWithFormat:@"%@ %d:%02d",daystr,hour,minute];
- }
- else if(year==t_year)
- string=[NSString stringWithFormat:@"%d:%d",month,day];
- else
- string=[NSString stringWithFormat:@"%d:%d:%d",year,month,day];
-
- return string;
- }
- +(int)dayCountForMonth:(int)month andYear:(int)year
- {
- if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) {
- return 31;
- }else if(month==4||month==6||month==9||month==11){
- return 30;
- }else if([self isLeapYear:year]){
- return 29;
- }else{
- return 28;
- }
- }
- +(BOOL)isLeapYear:(int)year
- {
- if (year%400==0) {
- return YES;
- }else{
- if (year%4==0&&year%100!=0) {
- return YES;
- }else{
- return NO;
- }
- }
- }
- +(NSString*)getTimeShort:(long long)t{
- if(t<0)
- t = 0;
- int m = (int)(t/60);
- int n = t%60;
- return [NSString stringWithFormat:@"%.2d:%.2d",m,n];
- }
- +(NSString*)getTimeShort1:(long long)t{
- if(t<0)
- t = 0;
- int p = (int)(t / 3600);
- t = t % 3600;
- int m = (int)(t/60);
- int n = t%60;
- if (p <= 0) {
- return [NSString stringWithFormat:@"%.2d:%.2d",m,n];
- }
- return [NSString stringWithFormat:@"%.2d:%.2d:%.2d",p,m,n];
- }
- +(NSDate*)dateFromString:(NSString*)s format:(NSString*)str{
- NSDateFormatter* f=[[NSDateFormatter alloc]init];
- if(str==nil)
- str = @"yyyy-MM-dd";
- [f setDateFormat:str];
- NSDate* d = [f dateFromString:s];
- return d;
- }
- +(NSString*)formatDateFromStr:(NSString*)s format:(NSString*)str{
- NSDateFormatter* f=[[NSDateFormatter alloc]init];
- if(!str)
- str = @"yyyy-MM-dd HH:mm:ss";
- [f setDateFormat:str];
- NSDate* d = [f dateFromString:s];
-
- f.dateFormat = str;
- NSString* s1 = [f stringFromDate:d];
- // [f release];
- return s1;
- }
- +(NSString*)formatDate:(NSDate*)d format:(NSString*)str{
- NSDateFormatter* f=[[NSDateFormatter alloc]init];
- f.dateFormat = str;
- NSString* s = [f stringFromDate:d];
- // [f release];
- return s;
- }
- +(NSString*)getDateStr:(long long)time{
- NSDateFormatter* f=[[NSDateFormatter alloc]init];
- f.dateFormat = @"yyyy-MM-dd";
- NSString* s = [f stringFromDate:[NSDate dateWithTimeIntervalSince1970:time]];
- // [f release];
- return s;
- }
- @end
|