时间戳日期格式否' T'

时间:2014-05-08 15:01:32

标签: ios timestamp nsdateformatter

为什么我无法以时间戳格式显示'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

1 个答案:

答案 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