似乎苹果时区现在对我有问题。我测试了下面的代码,但它没有正常工作。这就是我到目前为止所拥有的。
NSDate *today = [NSDate date];
NSDateFormatter *estDf = [[NSDateFormatter alloc] init];
[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
[estDf setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *stringDate = [estDf stringFromDate:today];
NSDate *todaydateadjusted = [estDf dateFromString:stringDate];
NSLog(@"Todays date is %@",[estDf stringFromDate:todaydateadjusted]);
这是我的NSLog回应
Todays date is 2015-03-09 16:25:02
我预计17:25:02时间不是16:25:02。因为它是5 o'在现在的时间p.m它现在应该打印出17而不是16。其他人有这个问题吗?也许我的代码有问题。
答案 0 :(得分:0)
现在有夏令时。你不应该使用EDT吗?
另一件事是时区名称与时区缩写。看看这个例子 - 我在Swift中写了它,但我认为它应该很容易理解并转换为ObjC。
var now = NSDate()
var df = NSDateFormatter()
df.timeZone = NSTimeZone(abbreviation: "EDT")
//df.timeZone = NSTimeZone(name: "EDT") <- wrong
df.dateFormat = "yyyy-MM-dd HH:mm:ss"
let edt = df.stringFromDate(now)
如果要使用全时区名称,请使用例如
df.timeZone = NSTimeZone(name: "America/New_York")
答案 1 :(得分:0)
你需要改变这个:
[estDf setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
到此:
[esfDf setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"EDT"]];