首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析shortstyle格式的时间和日期时NSDateFormatter中的错误

解析shortstyle格式的时间和日期时NSDateFormatter中的错误
EN

Stack Overflow用户
提问于 2009-11-04 13:50:38
回答 2查看 935关注 0票数 0
代码语言:javascript
复制
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);

先输出日期,再输出时间,怎么解决这个问题?

我想以短的样式显示时间,然后显示日期

EN

回答 2

Stack Overflow用户

发布于 2009-11-04 16:57:47

设置时间和日期样式时,将覆盖手动设置的日期格式。

试试这个:

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2009-11-04 20:25:02

设置timeStyledateStyle意味着格式化程序忽略您设置的dateFormat。如果无论用户的区域设置如何,您始终希望日期格式为00:00 on 2009/11/04,则应按如下方式设置区域设置:

代码语言:javascript
复制
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”,这可能会产生意想不到的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1671892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档