NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *formatterDate = [inputFormatter dateFromString:@"2009-11-03T21:02:34-08:00"];
[inputFormatter release];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"HH:mm 'on' yyyy/MM/dd"];
[outputFormatter setTimeStyle:NSDateFormatterShortStyle];
[outputFormatter setDateStyle:NSDateFormatterShortStyle];
NSString *newDateString = [outputFormatter stringFromDate:formatterDate];
NSLog(@"newDateString %@", newDateString);先输出日期,再输出时间,怎么解决这个问题?
我想以短的样式显示时间,然后显示日期
发布于 2009-11-04 16:57:47
设置时间和日期样式时,将覆盖手动设置的日期格式。
试试这个:
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *formatterDate = [inputFormatter dateFromString:@"2009-11-03T21:02:34-08:00"];
[inputFormatter release];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
//[outputFormatter setDateFormat:@"HH:mm 'on' yyyy/MM/dd"];
//[outputFormatter setTimeStyle:NSDateFormatterShortStyle];
//[outputFormatter setDateStyle:NSDateFormatterShortStyle];
//NSString *newDateString = [outputFormatter stringFromDate:formatterDate];
// format for time only
[outputFormatter setTimeStyle:NSDateFormatterShortStyle];
[outputFormatter setDateStyle:NSDateFormatterNoStyle];
// get time
NSString *newTimeString = [outputFormatter stringFromDate:formatterDate];
// format for date only
[outputFormatter setTimeStyle:NSDateFormatterNoStyle];
[outputFormatter setDateStyle:NSDateFormatterShortStyle];
// get date and format with time
NSString *newDateString = [NSString stringWithFormat:@"%@ on %@", newTimeString, [outputFormatter stringFromDate:formatterDate]];
NSLog(@"newDateString %@", newDateString);发布于 2009-11-04 20:25:02
设置timeStyle或dateStyle意味着格式化程序忽略您设置的dateFormat。如果无论用户的区域设置如何,您始终希望日期格式为00:00 on 2009/11/04,则应按如下方式设置区域设置:
NSDateFormatter*outputFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale* locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[outputFormatter setLocale:locale];
[outputFormatter setDateFormat:@"HH:mm 'on' yyyy/MM/dd"];
NSString* newDateString = [outputFormatter stringFromDate:formatterDate];请注意,如果您正在处理机器读取的日期(例如ISO8601),则应始终将区域设置设置为en_US_POSIX,因为某些区域设置会将“hh”转换为“hh”,这可能会产生意想不到的结果。
https://stackoverflow.com/questions/1671892
复制相似问题