1

美好的一天,我正在尝试将从服务器获取的 NSString 转换为 NSDate 对象。那是代码:

NSString *date = @"Sep 12 at 12:03 am";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM d 'at' H:m a"];
self.messageDateAndTime = [dateFormatter dateFromString:date];
NSLog(@"NSDate: %@", self.messageDateAndTime);

我以日期字符串的格式获取日期。在我尝试为此日期格式创建自己的格式化程序之后。但无论如何,我得到了null

我做错了什么?

4

3 回答 3

2

我在上面的代码中调试你运行良好并给出NSDate: 1970-09-11 18:33:00 +0000这个日志。首先检查你的字符串。有关更多信息,您可以使用以下类别。

// NSString+Date.h
@interface NSString (Date)
+ (NSDate*)stringDateFromString:(NSString*)string;
+ (NSString*)stringDateFromDate:(NSDate*)date;
@end


// NSString+Date.m
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];

NSDate *date = [dateFormatter dateFromString:stringDate ];
[dateFormatter release];
+ (NSDateFormatter*)stringDateFormatter
{
    static NSDateFormatter* formatter = nil;
    if (formatter == nil)
    {
        formatter = [NSDateFormatter alloc] init];
        [formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZZ"];
    }   
    return formatter;
}

+ (NSDate*)stringDateFromString:(NSString*)string
{
    return [[NSString stringDateFormatter] dateFromString:string];
}

+ (NSString*)stringDateFromDate:(NSDate*)date
{
    return [[NSString stringDateFormatter] stringFromDate:date];
}


// Usage (#import "NSString+Date.h")
NSString* string = [NSString stringDateFromDate:[NSDate date]];
NSDate* date = [NSString stringDateFromString:string];
于 2012-09-10T09:29:57.387 回答
1

请在此处找到正确的NSDateFormatter 格式字符串

于 2012-09-11T12:06:24.757 回答
0

我自己找到了解决方案,它会返回 null,直到您自己设置语言环境。这是代码:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"MMM d 'at' H:m a"];
self.messageDateAndTime =[dateFormatter dateFromString:messageDate];
于 2012-09-10T11:02:18.340 回答