我的NSDate *newDate
值为2011-08-12 13:00:00 +0000
。
现在,当我尝试通过dateformatter将其转换为字符串时,如下所示:
NSDateFormatter *dateFormatter= [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd h:mm:ss Z"];
NSString *datestr = [[dateFormatter stringFromDate:newDate] lowercaseString];
但我获得的datetr值比newDate
值多5:30小时。我不知道我哪里错了。我将datestr
的值视为2011-08-12 18:30:00 + 5:30
(这是不正确的)。
答案 0 :(得分:2)
它基本上将时间转换为您当地的时区。如果你不想那只是设置日期格式化程序的时间:
[dateFormatter setTimeZone:[NSTimeZone <use any of the functions below to get your desired one>]];
Creating and Initializing Time Zone Objects
+ timeZoneWithAbbreviation:
+ timeZoneWithName:
+ timeZoneWithName:data:
+ timeZoneForSecondsFromGMT:
– initWithName:
– initWithName:data:
+ timeZoneDataVersion
Working with System Time Zones
+ localTimeZone
+ defaultTimeZone
+ setDefaultTimeZone:
+ resetSystemTimeZone
+ systemTimeZone
答案 1 :(得分:0)
看起来它必须是时区/ UTC的东西。日期可能在全球/世界时间内返回,您想要的是当地时间。
根据IOS文档:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html - 您似乎可以尝试包含区域设置,以指定您想要的时区。
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];
NSLog(@"Date for locale %@: %@",
[[dateFormatter locale] localeIdentifier], [dateFormatter stringFromDate:date]);