如果我对时间不感兴趣,我可以忽略它吗?即我有一个看起来像这样的日期字符串,@"2012-12-19T14:00:00"
但我只对获取日期(2012-12-19)感兴趣,但如果我设置NSDateFormatter
它[dateFormatter setDateFormat:@"yyyy-MM-dd"];
会返回一个 nil NSDate
。
问问题
2018 次
2 回答
3
NSDate 对象也总是包含一个时间组件,因为它代表一个时间点——从这个角度来看,人们可能会认为 NSDate 的名称具有误导性。
您应该创建一个日期格式化程序来从字符串创建日期,将时间设置为一天的开始,并使用第二个日期格式化程序来输出没有时间组件的日期。
NSString *dateString = @"2012-12-19T14:00:00";
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateStyle:NSDateFormatterShortStyle];
[outputFormatter setTimeStyle:NSDateFormatterNoStyle];
NSDate *date = [inputFormatter dateFromString:dateString];
//this will set date's time components to 00:00
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit
startDate:&date
interval:NULL
forDate:date];
NSString *outputString = [outputFormatter stringFromDate:date];
NSLog(@"%@", outputString);
结果是
19.12.12
而格式(由样式选择)将取决于您的环境语言环境
于 2012-11-19T13:18:38.663 回答
-2
所有日期字符串都返回 10 个字符作为日期,我的意思是今天的日期将是 2012-11-19
您可以轻松地对日期进行子串化并根据需要使用它:
例子 :
NSString* newDate = @"";
newDate = [[NSDate date]substringToIndex:10];
输出将是:2012-11-19
于 2012-11-19T13:02:36.597 回答