【问题标题】:NSString with date: reduce size of date带有日期的 NSString:减小日期的大小
【发布时间】:2012-02-06 20:41:06
【问题描述】:

我有一个像 Mon Feb 06 20:02:17 +0000 2012 这样的 NSString。我想用更短的方式来写,可能是:DD-MM-YY, HH:MM。我认为也许我可以将其转换为 NSDate,然后再转换为更短的 NSString,但我不知道如何将这种奇怪的日期格式转换为 NSDate。

如果您需要更多信息,请咨询我。 谢谢!

【问题讨论】:

标签: iphone date ios5 nsstring


【解决方案1】:

您需要使用NSDateFormatter 告诉NSDate 原始日期的格式和您想要的格式,然后您可以像这样在两者之间进行转换:

NSString *oldDate = @"Mon Feb 06 20:02:17 +0000 2012";
NSString *oldFormat = @"EEE MMM dd HH:mm:ss ZZ yyyy";

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:oldFormat];

NSDate *date = [dateFormatter dateFromString:sourceString];

NSString *newFormat = @"dd-MM-yy, HH:mm";

[dateFormatter setDateFormat:newFormat];
NSString *newDate = [dateFormatter stringFromDate:date];

【讨论】:

    【解决方案2】:

    StackOverflow 中有类似的问题和答案以及可能对您有所帮助的教程:

    教程: http://iosdevelopertips.com/cocoa/date-formatters-examples-take-3.html

    类似问题:

    编辑

    NSString *dateStr = @"20081122"; 
    
    // Convert string to date object
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyyMMdd"];
    NSDate *date = [dateFormat dateFromString:dateStr];  
    
    // Convert date object to desired output format
    [dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
    dateStr = [dateFormat stringFromDate:date];
    

    【讨论】:

    • 既然你知道确切的日期格式,那就更容易了。我编辑了我的答案以显示它。
    【解决方案3】:

    试试NSDateFormatter。

    您可以使用其中一种方法转换为 NSDate:

    - (NSDate *)dateFromString:(NSString *)string
    

    然后使用 NSDateFormatter 将其转换为您想要的任何内容。

    编辑:实际上 NSDate 有一个类方法,所以你也可以检查一下:

    + (id)dateWithString:(NSString *)aString
    

    【讨论】:

    • 我知道但我试过了,NSDate 给出了 nil
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2020-11-26
    • 1970-01-01
    • 2020-12-21
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多