【问题标题】:Is there a way to convert a natural language date NSString to an NSDate有没有办法将自然语言日期 NSString 转换为 NSDate
【发布时间】:2011-08-18 05:21:41
【问题描述】:

假设我有 NSString @"tomorrow"

是否有任何库可以接受这样的字符串并将它们转换为 NSDates?我正在想象/希望这样的事情:

NSString* humanDate = @"tomorrow at 4:15";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"x at HH:MM"];
NSDate* date = [dateFormatter dateFromString:humanDate];

我也想做诸如“下周一”之类的事情,但它不必非常复杂。我可以强制执行输入规则,但我想要一些可用的自然语言。

我的替代方法是获取字符串,将其分解为多个部分,然后手动格式化。但我希望有人已经这样做了。

【问题讨论】:

    标签: objective-c ios parsing nlp nsdate


    【解决方案1】:

    你的意思是像dateWithNaturalLanguageString:这样的东西吗?

    来自链接:

    dateWithNaturalLanguageString:

    创建并返回一个设置为给定字符串指定的日期和时间的 NSDate 对象。

    + (id)dateWithNaturalLanguageString:(NSString *)string

    一个字符串,其中包含一个日期的通俗规范,例如“last Tuesday at Dinner”、“2001 年 12 月 31 日下午 3 点”、“12/31/01”或“31/12/01”。

    p>

    【讨论】:

    • 这被认为是私有 API 使用,不是吗?它没有记录在 NSDate for iOS 中,它会产生警告。不过,它确实有效。
    • -1 如果你用这个提交一个应用到 iOS App Store,它可能会被拒绝。 +dateWithNaturalLanguageString: 是 iOS 上的私有 API。
    • @Dave,在这种情况下,还有其他建议吗?
    • dateWithNaturalLanguageString 自 iOS10 起现已弃用,但您可以使用 github.com/kevinlawler/NSDate-TimeAgo
    • 如果您的案例只涉及少数有限的自然语言模式,请自行解析。如果没有,你可以试试这个github.com/quire-io/SwiftyChrono。
    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2011-04-24
    • 2017-04-23
    相关资源
    最近更新 更多