代码之家  ›  专栏  ›  技术社区  ›  Mark Struzinski

如何在Objective-C中设置未知日期格式

  •  1
  • Mark Struzinski  · 技术社区  · 14 年前

    2010年10月10日星期日01:44:00+0000

    我需要把它转换成很长的格式,没有时间,比如:

    2010年10月10日

    我试过使用NSDateFormatter,但是当我试图从字符串中获取日期时,它总是返回零。我这样试过:

    NSString *dateFromData = [articleData objectAtIndex:5];
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
    NSDate *date = [dateFormatter dateFromString:dateFromData];  
    
    NSString *formattedDateString = [dateFormatter stringFromDate:date];
    

    2 回复  |  直到 14 年前
        1
  •  1
  •   Aaron Saunders    14 年前

    NSString *dateFromData = @"Sun, 10 Oct 2010 01:44:00 +0000";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd MMM yyyy hh:mm:ss zzzz"];
    
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    [dateFormatter setTimeZone:gmt];
    
    NSDate * date = [dateFormatter dateFromString:dateFromData];
    
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    
    NSString *formattedDateString = [dateFormatter stringFromDate:date];
    
        2
  •  0
  •   dj2    14 年前

    NSDateFormatter *df = [[NSDateFormatter alloc] initWithDateFormat:@"%a, %d %b %Y %H:%M:%S %z"
                                                 allowNaturalLanguage:false];
    NSDate *d = [df dateFromString:@"Sun, 10 Oct 2010 01:44:00 +0000"];
    NSDateFormatter *df2 = [[NSDateFormatter alloc] initWithDateFormat:@"%B %d, %Y"
                                                  allowNaturalLanguage:false];
    [df2 stringFromDate:d]
    

    (注意,我用MacRuby编写了这段代码,并将其移植回Objective-C,因此可能存在语法错误。)

    irb(main):001:0> df = NSDateFormatter.alloc.initWithDateFormat("%a, %d %b %Y %H:%M:%S %z", allowNaturalLanguage:false)
    => #<NSDateFormatter:0x20021b960>
    irb(main):002:0> d = df.dateFromString("Sun, 10 Oct 2010 01:44:00 +0000")
    => #<NSCalendarDate:0x2002435e0>
    irb(main):004:0> df2 = NSDateFormatter.alloc.initWithDateFormat("%B %d, %Y", allowNaturalLanguage:false)
    => #<NSDateFormatter:0x20026db60>
    irb(main):005:0> df2.stringFromDate(d)
    => "October 09, 2010"