【问题标题】:Convert NSString to NSDate to compare which one is newer?将 NSString 转换为 NSDate 以比较哪个更新?
【发布时间】:2013-05-17 08:58:32
【问题描述】:

第一次来电,长期听众:) 喜欢这个网站。我是 Objective-C 的新手,但学得很好。对于这么简单的问题,我很抱歉,但我无法弄清楚。 :(

我有两个 NSStrings 的格式: 项目日期:[2013 年 3 月 1 日] 最后加载日期:[1980 年 1 月 1 日]

我想找出最近的字符串(日期)。为此,我试图将 NSString 转换为 NSDate,然后进行比较,但我没有任何运气。这是我的代码。任何和所有的帮助将不胜感激!

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *titemdate = [df dateFromString: itemdate];

NSDateFormatter *df1 = [[NSDateFormatter alloc] init];
[df1 setDateFormat:@"yyyy-MM-dd"];
NSDate *tlasttimerundate = [df1 dateFromString: lastdate];

if ([tlasttimerundate compare:titemdate] == NSOrderedDescending) 
{
   NSLog(@"itemdate is newer than lastdate");
}

【问题讨论】:

    标签: objective-c date compare nsdate nsdateformatter


    【解决方案1】:

    使用[df setDateFormat:@"MMMM d,YYYY"]; 而不是[df setDateFormat:@"yyyy-MM-dd"];

    MMMM 格式将获取完整日期月份,而 MM 格式将仅获取月份数。例如,MM5MMMMMMay

    实现日期比较:

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"MMMM d,YYYY"];
    df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];
    NSDate *titemdate = [df dateFromString: itemdate];
    NSDate *tlasttimerundate = [df dateFromString: lastdate];
    
    if ([tlasttimerundate compare:titemdate] == NSOrderedDescending) 
    {
       NSLog(@"itemdate is newer than lastdate");
    }
    

    您可以在此处找到有关日期格式的更多信息:http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

    【讨论】:

    • 我想建议您也告诉NSDateFormatter 日期的语言环境:df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"EN"];。其他如果iOS系统语言没有设置为英文则无法解析日期。
    • 是的。将在我的回答中包含这一点
    • 还是不行。使用您的代码,我在输出窗口中一无所获。 :( 当我这样做时: NSLog(@"Podcast date: [%@] lastdate: [%@]", itemdate, lastdate); 我收到: Podcast date: [May 10, 2013] lastdate: [January 1, 1980 ] 所以我很确定我的字符串是正确的。我很困惑。:(谢谢你的帮助。
    • @rckoenes :呵呵,我们正在并行编辑它,我将日期格式更改为 mmmm,并且当您要提交您的编辑时出现!!! :)
    • @LithuT.V 也看到了:D 只是更改了日期格式,因为我在那里发现了错误。
    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 2017-04-23
    • 2021-09-11
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多