【问题标题】:How to convert date string into format "17 Nov 2010"如何将日期字符串转换为格式“2010 年 11 月 17 日”
【发布时间】:2011-05-11 08:35:06
【问题描述】:

我的日期格式为 2010-11-17。格式为 NSString

我想将此 NSString 日期 转换为 17 Nov 2010 格式并显示在标签中

这个日期不是当前日期,甚至可能是更早的日期。

所以我不能使用 [NSDate date] 实例来获取日期。

我尝试通过 dateFromString 方法使用 NSDateFormatter

但它给了我一个 null 值。

这里是代码sn-p

NSString *dates  = @”2010-11-16”;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd MMM yyyy"];
NSDate *dates1 = [dateFormatter dateFromString:dates];
NSString *dates2 = [dateFormatter stringForObjectValue:dates1];
NSLog(@"dates : %@",dates);
NSLog(@"Dates 2 :  %@",dates2);
[dateLabel setText:dates2];
NSLog(@"Formatted Date is : %@",dateLabel.text);

应该怎么做?

请帮助和建议。

谢谢。

【问题讨论】:

    标签: iphone objective-c ios4 nsdate nsdateformatter


    【解决方案1】:

    试试这个

    NSDateFormatter *formater = [[NSDateFormatter alloc] init];
    [formater setDateFormat:@"yyyy-MM-dd"];
    NSDate *date2 = [formater dateFromString:@"2010-11-17"];
    [formater setDateFormat:@"d MMM yyyy"];
    NSString *result = [formater stringFromDate:date2];
    NSLog(@"RESULT %@",result);
    

    我得到了结果。如果这种方法是错误的,请纠正我。

    【讨论】:

      【解决方案2】:

      这里有一些格式供想知道的人参考!!

       12:16:45 PM on January 01, 2000   --> hh:mm:ss a 'on' MMMM dd, yyyy
       Wednesday, Sep 12, 2018           --> EEEE, MMM d, yyyy--
       09/12/2018                        --> MM/dd/yyyy--
       09-12-2018 14:11                  --> MM-dd-yyyy HH:mm--
       Sep 12, 2:11 PM                   --> MMM d, h:mm a--
       September 2018                    --> MMMM yyyy--
       Sep 12, 2018                      --> MMM d, yyyy
       Wed, 12 Sep 2018 14:11:54 +0000   --> E, d MMM yyyy HH:mm:ss Z
       2018-09-12T14:11:54+0000          --> yyyy-MM-dd'T'HH:mm:ssZ
       12.09.18                          --> dd.MM.yy
       10:41:02.112                      --> HH:mm:ss.SSS
       12:16:45 PM                       --> hh:mm:ss a
       AM or PM                          --> a
      

      【讨论】:

        【解决方案3】:

        NSDateFormatter 使用date format patterns from UNICODE

        所以对于您的 2010 年 11 月 17 日日期,您需要这样的东西:

        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"d MMM yyyy"];
        NSString *result = [formatter stringForObjectValue:date];
        

        其中date 变量包含您要格式化的日期。

        更新:尝试将您的代码更改为:

        NSString *dates  = @”2010-11-16”;
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        NSDate *dates1 = [dateFormatter dateFromString:dates];
        [dateFormatter setDateFormat:@"dd MMM yyyy"];
        NSString *dates2 = [dateFormatter stringForObjectValue:dates1];
        NSLog(@"dates : %@",dates);
        NSLog(@"Dates 2 :  %@",dates2);
        [dateLabel setText:dates2];
        NSLog(@"Formatted Date is : %@",dateLabel.text);
        

        【讨论】:

        • 我已经试过你给的代码,但它仍然返回空值。
        • @PARTH 什么给了你一个空值?
        • 控制台中的“结果”变量显示空值。我的“日期”变量是 NSString
        • @PARTH: 你的日期变量是非空的吗?
        • 是的,我的日期变量不为空。
        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 2015-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多