标签: nsdate

将ISO 8601转换为NSDate

我有来自服务器的时间戳,如下所示:

2013-04-18T08:49:58.157+0000
Run Code Online (Sandbox Code Playgroud)

我试过去掉冒号,我已经尝试了所有这些:

将ISO 8601时间戳转换为NSDate:如何处理UTC时间偏移?

为什么NSDateFormatter无法解析ISO 8601格式的日期

这是我在的地方:

+ (NSDate *)dateUsingStringFromAPI:(NSString *)dateString {


    NSDateFormatter *dateFormatter;
    dateFormatter = [[NSDateFormatter alloc] init];

    //@"yyyy-MM-dd'T'HH:mm:ss'Z'" - doesn't work
    //@"yyyy-MM-dd'T'HH:mm:ssZZZ" - doesn't work
    //@"yyyy-MM-dd'T'HH:mm:sss" - doesn't work 

    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

    // NSDateFormatter does not like ISO 8601 so strip the milliseconds and timezone
    dateString = [dateString substringWithRange:NSMakeRange(0, [dateString length]-5)];

    return [dateFormatter dateFromString:dateString];
}
Run Code Online (Sandbox Code Playgroud)

我最大的问题之一是,我上面的日期格式是否真的是ISO 8601?我从人们看到的所有例子都有不同的格式.有些人...157-0000,有些人最后没有任何东西.

formatting iso objective-c nsdate nsdateformatter

29
推荐指数
2
解决办法
1万
查看次数

NSDate为该月的第一天

这是一个非常简单的概念,但到目前为止,我一直无法找到一个优雅的(和日历区域独立)解决方案.我需要找到一个任意的月份的第一天NSDate.例如,给定一个任意NSDate(arbitraryDate)将返回另一个NSDate对象(让我们调用它firstDayOfMonthDate),它代表该月的第一天arbitraryDate.时间组件并不重要,因为我只需要在该月的第一天使用NSDate对象(尽管为了整洁,如果时间刚刚归零,它将是有用的).

在此先感谢您的任何帮助.

iphone cocoa-touch nsdate nscalendar

28
推荐指数
2
解决办法
2万
查看次数

按NSDate属性对对象数组进行排序

可能重复:
如何使用自定义对象对NSMutableArray进行排序?

如何通过访问其NSDate属性对对象数组进行排序?

我知道可以[mutableArray sortUsingSelector:@selector(compare:)];在一个日期数组上使用,但是如何通过访问数组中每个元素的NSDate属性,按最早的日期到最新日期对对象进行排序?

sorting objective-c nsdate nsmutablearray

28
推荐指数
3
解决办法
2万
查看次数

如何将Unix时间戳转换为Swift NSDate对象?

我通过我的API 获取日期作为Unix时间戳,我想将它们转换为Swift中的NSDate对象.

我怎样才能做到这一点?

nsdate unix-timestamp swift

28
推荐指数
1
解决办法
2万
查看次数

如何使用NSDate从今天的日期找到工作日?

我知道我可以弄清楚今天的日期,[NSDate date];但我怎么能找到今天的星期几,如星期六,星期五等.

我知道%w可以使用NSDateFormatter,但我不知道使用它.

objective-c nsdate

27
推荐指数
1
解决办法
2万
查看次数

iOS:比较两个没有时间部分的NSDate-s

我想比较两个日期:date1和date2

2011-06-06 12:59:48.994 Project[419:707] firstDate:2011-06-06 10:59:21 +0000
2011-06-06 12:59:49.004 Project[419:707] selectedData:2011-06-06 10:59:17 +0000
Run Code Online (Sandbox Code Playgroud)

但这些日期有不同的时间,当我使用NSOrderedSame它不能正常工作,我该如何解决?

我的代码:

NSDate *firstDate = [[appDelegate.project objectAtIndex:i]objectAtIndex:3];
NSDate *secondDate = [[appDelegate.project objectAtIndex:i]objectAtIndex:4];

NSCalendar *calendar = [NSCalendar currentCalendar];
NSInteger comps = (NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit);

NSDateComponents *date1Components = [calendar components:comps 
                                                            fromDate:firstDate];
NSDateComponents *date2Components = [calendar components:comps 
                                                            fromDate:secondDate];
NSDateComponents *date3Components = [calendar components:comps fromDate:appDelegate.selectedDate];

NSLog(@"firstDate:%@", [date1Components date]);
NSLog(@"secondDate:%@", [date2Components date]);
NSLog(@"selectedData:%@", [date3Components date]);

NSComparisonResult compareStart = [[date1Components date] compare: [date3Components date]]; 
NSComparisonResult compareEnd = [[date2Components date] compare: [date3Components …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c nsdate ios

27
推荐指数
3
解决办法
2万
查看次数

从字符串创建NSDate

我有NSString这样的:@"3/15/2012 9:15 PM"我想把它转换成NSDate,我这样做了:

NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"mm/dd/yyyy HH:mm"];
NSDate *date = [formatter dateFromString:];

NSLog(@"%@", date);  // date = null
Run Code Online (Sandbox Code Playgroud)

谢谢你能帮我吗

format objective-c nsdate ios

27
推荐指数
1
解决办法
3万
查看次数

NSDateFormatter未显示完整月份名称,仅显示单个数字

不确定是什么问题,但不是得到一个月的名字"七月",我得到"07".

dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];    
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
Run Code Online (Sandbox Code Playgroud)

我已经尝试了M,MM,MMM,MMMM,并且所有这些都给了我一个数字,而不是月份名称,尽管有不同数量的前导0.

nsdate nsdateformatter ios

27
推荐指数
3
解决办法
3万
查看次数

我如何在swift中获得String当前月份:

我需要得到可能作为当月,但我做不到.我怎样才能做到这一点.

   let date = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let components = calendar.components([.Day , .Month , .Year], fromDate: date)

    let year =  components.year
    let month = components.month
    let day = components.day
Run Code Online (Sandbox Code Playgroud)

我做了这个,但没有奏效.

nsdate nscalendar ios swift

27
推荐指数
3
解决办法
4万
查看次数

两个NSDate之间的小时差异

在这里,我试图计算两个日期之间的小时数.当我运行应用程序时,它崩溃了.你能告诉我这段代码中的错误吗?

NSString *lastViewedString = @"2012-04-25 06:13:21 +0000";
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];

NSDate *lastViewed = [[dateFormatter dateFromString:lastViewedString] retain];
NSDate *now = [NSDate date];

NSLog(@"lastViewed: %@", lastViewed); //2012-04-25 06:13:21 +0000
NSLog(@"now: %@", now); //2012-04-25 07:00:30 +0000

NSTimeInterval distanceBetweenDates = [now timeIntervalSinceDate:lastViewed];
double secondsInAnHour = 3600;
NSInteger hoursBetweenDates = distanceBetweenDates / secondsInAnHour;

NSLog(@"hoursBetweenDates: %@", hoursBetweenDates);
Run Code Online (Sandbox Code Playgroud)

iphone xcode objective-c nsdate ios

26
推荐指数
2
解决办法
1万
查看次数