Iphone 以shortstyle解析时间和日期时,NSDateFormatter中存在错误

Iphone 以shortstyle解析时间和日期时,NSDateFormatter中存在错误,iphone,Iphone,首先输出日期,然后输出时间如何解决 我想以短样式显示时间,而不是日期设置时间和日期样式时,将覆盖手动设置的日期格式 试试这个: NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; [inputFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"]; NSDate *formatterDate = [inputFormatter dateFromString:@"2009-1

首先输出日期,然后输出时间如何解决


我想以短样式显示时间,而不是日期设置时间和日期样式时,将覆盖手动设置的日期格式

试试这个:

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);

设置
timeStyle
dateStyle
意味着格式化程序将忽略您设置的
dateFormat
。如果您始终希望在2009/11/04将日期格式化为
00:00
,而不考虑用户的区域设置,则应如下设置区域设置:

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);
请注意,如果处理机器读取日期(例如ISO 8601),则应始终将区域设置为
en_US_POSIX
,因为某些区域设置会将“HH”变成“HH”,这可能会产生意外结果

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];