NSDate 未使用 NSDateFormatter 正确转换 [英] NSDate is not converting correctly using NSDateFormatter
问题描述
我有以下 NSDateFormatter:
I have the following NSDateFormatter:
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM. d, yyyy"];
NSLocale *usLocal = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocal];
我有一个 while 循环,它从给定的开始日期开始,并将日期递增 1,直到达到特定的结束日期.
and I have a while loop which starts at a given start date and increments the date by one until it reaches a specific end date.
NSDate *d = start;
while(YES){
NSString *td = [dateFormatter stringFromDate:d];
NSLog(@"converted date %@ to %@",d,td);
...adds a date and re-initializes d
}
我得到如下输出:
2011-06-11 17:10:18.678 ListOf100[8784:707] converted date 2011-05-31 00:00:00 +0000 to May. 30, 2011
2011-06-11 17:10:18.687 ListOf100[8784:707] converted date 2011-06-01 00:00:00 +0000 to May. 31, 2011
2011-06-11 17:10:18.717 ListOf100[8784:707] converted date 2011-06-02 00:00:00 +0000 to Jun. 1, 2011
如您所见,所有日期都没有正确转换.他们都休息了 1 天.为什么会发生这种情况?我该如何解决?
As you can see, all the dates are not converting properly. They are all off by 1 day. Why could this be happening? And how can I fix it?
推荐答案
在我看来,创建日期的时区与格式化程序所在的时区不同.
Looks to me like the dates are being created in a different time zone than the one the formatter's working in.
NSDate * d = [NSDate dateWithTimeIntervalSince1970:800000];
// Arbitrary date
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM. d, yyyy"];
NSLocale *usLocal = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocal];
//!!!: Set time zone
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSString *td = [dateFormatter stringFromDate:d];
NSLog(@"converted date %@ to %@",d,td);
产量:
2011-06-11 22:44:01.642 TimeZoneFormatter[21901:207] 转换日期 1970-01-10 06:13:20 +0000 到 1970 年 1 月 10 日
2011-06-11 22:44:01.642 TimeZoneFormatter[21901:207] converted date 1970-01-10 06:13:20 +0000 to Jan. 10, 1970
这篇关于NSDate 未使用 NSDateFormatter 正确转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!