gpt4 book ai didi

ios - NSDate 未使用 NSDateFormatter 正确转换

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:51:58 24 4
gpt4 key购买 nike

我有以下 NSDateFormatter:

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM. d, yyyy"];

NSLocale *usLocal = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocal];

我有一个 while 循环,它从给定的开始日期开始,然后将日期递增 1,直到达到特定的结束日期。

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 天。为什么会这样?我该如何解决?

最佳答案

在我看来,这些日期是在与格式化程序所在的时区不同的时区中创建的。

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] converted date 1970-01-10 06:13:20 +0000 to Jan. 10, 1970

关于ios - NSDate 未使用 NSDateFormatter 正确转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com