gpt4 book ai didi

objective-c - NSDateFormatter 和日期转换不起作用

转载 作者:行者123 更新时间:2023-12-03 16:23:17 25 4
gpt4 key购买 nike

我正在为 iPhone 开发一个应用程序,我需要将日期从 XML feed 转换为 HH:MM 格式。

我有以下方法不起作用,我不知道我做错了什么。

例如,timeToConvert 字符串为:“Mon, 01 Feb 2010 21:55:00 +0100”(不带引号)

当区域设置为美国(我得到正确的日期)时,该方法有效,但当我将区域(在“设置”->“常规”->“国际”中)更改为西类牙或其他区域时(在这种情况下我返回零)。

- (id)timeConvertToHHMM:(NSString *)timeToConvert {

NSString *newPubDate = timeToConvert;
//Let's remove any rubbish from the code
newPubDate = [newPubDate stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
//create formatter and format to convert the XML string to an NSDate
NSDateFormatter *originalDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[originalDateFormatter setDateFormat:@"EEE, d MMM yyyy H:mm:ss z"];
//run the string through the formatter
NSDate *formattedDate = [[NSDate alloc] init];
formattedDate = [originalDateFormatter dateFromString:newPubDate];
//Let's now create another formatter to take the NSDate and convert format it to Hours and minutes
NSDateFormatter *newDateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[newDateFormatter setDateFormat:@"HH:mm"]; // 24H clock set
// And let's convert it back to a readable string
NSString *calcHHMM = [newDateFormatter stringFromDate:formattedDate];
NSLog(@"CalcHHMM: %@", calcHHMM);
return calcHHMM;
}

任何关于为什么这不起作用的提示,并且只返回 NULL 将非常受欢迎。

最佳答案

问题似乎是您的区域设置不是“en-US”,因此日期格式化程序不会使用提供的 en-US 格式解析字符串。尽管可能有一个更优雅、更通用的解决方案,但在 originalDateFormatter 上执行 setLocale 为 en_US 可以作为解决该问题的解决方法。

正如您已经在代码中尝试过的那样:

[originalDateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] autorelease]];

关于objective-c - NSDateFormatter 和日期转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2180379/

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