我从year服务获得了一个MM00yyyy格式的日期--它只是两位数的月份,后跟两个0,然后是四位数的年份。当我这样做的时候:
NSString *expDate = @"12001975";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM00yyyy"];
NSDate postDate = [dateFormat dateFromString:expDate];由于某种原因,[dateFormat dateFromString]返回nil。我也尝试过MMddyyyy和MM'0''0'yyyy,但这两种方法都没有成功。我正在转换一个类似的日期,除了0实际上是使用相同方法没有问题的日期。
发布于 2011-06-30 04:25:59
看看苹果的Date Formatting Guide吧。“使用格式字符串指定自定义格式”一节列出了各种iOS版本支持的用于指定格式字符串的所有不同标准。我会说"00“是不允许的,所以这就是"MM00yyyy”失败的原因。同样,"MMddyyyy“也失败了,因为没有一天可以是"00”。
我不知道你是否能更幸运地使用UNIX函数,就像Apple文档中建议的那样:
对于固定的、未本地化的格式的日期和时间,有时使用标准C库函数strptime_l和strftime_l可能会更容易、更有效。
请注意,C库也有当前语言环境的概念。为了保证固定的日期格式,您应该将NULL作为这些例程的loc参数传递。这会导致他们使用POSIX (也称为C locale),它等同于Cocoa的en_US_POSIX语言环境,如本例所示。
struct tm sometime;
const char *formatString = "%Y-%m-%d %H:%M:%S %z";
(void) strptime_l("2005-07-01 12:00:00 -0700", formatString, &sometime, NULL);
NSLog(@"NSDate is %@", [NSDate dateWithTimeIntervalSince1970: mktime(&sometime)]);
// Output: NSDate is 2005-07-01 12:00:00 -0700https://stackoverflow.com/questions/6526575
复制相似问题