为什么我无法以时间戳格式显示'T'?
我用:
NSDate *date = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setTimeZone:[NSTimeZone localTimeZone]];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
这让我发疯了。我只得到:
2014-05-08 15:00:50 +0000
我期望以下T
:
2014-05-08T22:31:51.900+0800
答案 0 :(得分:0)
看起来您只是NSLog
NSDate
NSString
对象,而不是通过调用日期格式化程序stringFromDate
得到的NSDate *date = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
// [df setTimeZone:[NSTimeZone localTimeZone]]; // not needed, as it defaults to current time zone
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSString *dateString = [df stringFromDate:date];
NSLog(@"%@", dateString);
。
如果您执行以下操作,您将看到使用格式化程序的字符串:
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.locale = enUSPOSIXLocale;
df.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
NSDate *date = [NSDate date];
NSString *dateString = [df stringFromDate:date];
NSLog(@"%@", dateString);
顺便说一下,为了确保这种行为可预测,无论设备的区域化设置如何,您也可能想要设置区域设置:
{{1}}
有关建议区域设置原因的信息,请参阅Technical Q&A 1480。