【问题标题】:How can I get the date but not time from NSDate如何从 NSDate 获取日期而不是时间
【发布时间】:2009-09-25 00:17:06
【问题描述】:

我需要日期作为字符串,而不是时间,它必须本地化。

例如,美国应该是 2009 年 9 月 25 日,但对于新西兰来说应该是 2009 年 9 月 25 日。 我可以通过指定格式“MMM dd YYYY”将日期转换为字符串,但它没有本地化。

有什么想法吗?

【问题讨论】:

    标签: iphone localization formatting nsdate


    【解决方案1】:
    [NSDateFormatter localizedStringFromDate:[NSDate date]
                                   dateStyle:NSDateFormatterMediumStyle
                                   timeStyle:0]
    

    【讨论】:

    • 这在 iPhone 上可用吗?似乎不在 iPhone 特定的 NSDateFormatter 文档中。
    • timeStyle 应设置为 kCFDateFormatterNoStyle。它恰好是 0,但是当提供了命名常量时,您真的不应该对常量进行硬编码。
    【解决方案2】:

    关键是将setTimeStyle:kCFDateFormatterNoStyle 发送到dateFormatter。这将设置 dateFormatter 以便它只格式化日期而不输出时间:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
    [dateFormatter setLocale: [NSLocale currentLocale]];    
    [dateFormatter setDateStyle:kCFDateFormatterShortStyle]; // or whichever style...
    [dateFormatter setTimeStyle:kCFDateFormatterNoStyle];   
    NSString* dateString = [dateFormatter stringFromDate: [NSDate date]];
    

    这给了我以下输出:

    12/18/09
    

    【讨论】:

    • 我可以用同样的方式得到没有日期的时间吗?如果是,那么它对我不起作用。当我在 NSDate 有时间时,我的对象仍然为零
    • 它应该可以工作。如果您无法正常工作,请发布带有新问题的代码。
    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2017-04-14
    • 2011-11-01
    • 2015-04-25
    • 2011-08-07
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多