我想获得当前时间,但我收到了GMT。我添加了语言环境,但它没有帮助我。我用的是iPod touch。有什么问题?
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *locale =[NSLocale currentLocale];
[dateFormatter setLocale:locale];
dateFormatter.dateFormat =@"yyyy-MM-dd HH:mm:ss ZZZ";
NSDate *date = [dateFormatter dateFromString:[[NSDate date] description]];
更新:我使用NSDateFormatter因为我需要show
2012-03-17 12:20:33
代替
2012-03-17 12:20:33 +0000
答案 0 :(得分:4)
我找到了很好的解决方案。
NSCalendar * calendar = [NSCalendar currentCalendar];
NSDateComponents * components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSSecondCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit
fromDate:[NSDate date]];
NSString * stringDate = [NSString stringWithFormat:@"%d-%d-%d %d:%d:%d", components.year, components.month, components.day, components.hour, components.minute, components.second];
另一种解决方案
NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *zone = [NSTimeZone localTimeZone];
[formatter setTimeZone:zone];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSLog(@"Date %@",[formatter stringFromDate:date]);
答案 1 :(得分:3)
嗯,你也可以
NSTimeZone* local = [NSTimeZone localTimeZone];
NSInteger secondsOffset = [localTimeZone secondsFromGMTForDate:[NSDate date]];
然后您可以将其添加到现有日期中。
答案 2 :(得分:1)
嗯,“ZZZ”是指定GMT的日期格式。见http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns
顺便说一句,不要将(NS)语言环境与(NS)时区混淆。他们不一样。语言环境定义样式,例如“01.02.2012”vs“02/01/2012”,时区定义...时区。
答案 3 :(得分:1)
奇怪的是,为什么你要在这里完成日期格式化? NSDate *date = [NSDate date];
将为您提供当前时间的日期。