【问题标题】:Xcode preprocessor macro for dates日期的 Xcode 预处理器宏
【发布时间】:2015-01-24 13:42:14
【问题描述】:

我想将过期日期“硬编码”到我的 beta 代码中。现在我手动计算一个 unix 日期并将其与当前日期时间进行比较:

 if([[NSDate date] timeIntervalSince1970]>1422748800) mustHalt = TRUE;

我想要一种将1422748800 替换为在编译时生成未来 90 天日期的等效数字的宏的方法。

有什么建议吗?

【问题讨论】:

    标签: xcode datetime macros


    【解决方案1】:

    预定义的宏 __DATE__ 是您所需要的。 Here is a SO question 与此相关。但也许你想使用这样的代码:

        const int daysToExpire = 14;
    
        NSString *compileDate = [NSString stringWithUTF8String:__DATE__];
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"MMM d yyyy"];
        NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
        [df setLocale:usLocale];
        NSDate *expireDate = [df dateFromString:compileDate];
    
        bool isExpired = ([[NSDate date] compare:expireDate] == NSOrderedDescending); // decide for it
    

    【讨论】:

    • 不需要宏,甚至不是一个想法,它只是一种方法会更好。答案的关键部分是使用__DATE__。此外,代码将无法编译。
    • 当然,你是对的。但据我了解,这就是问题所在。
    • 这对我有用 - 谢谢。关键是创建一个基于编译日期的常量。
    • @Zaph:现在我知道了。但我想我明白了。
    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2010-12-01
    • 2014-04-17
    • 1970-01-01
    相关资源
    最近更新 更多