【问题标题】:Get Month, Day, Year, Day of week from NSString从 NSString 获取月、日、年、星期几
【发布时间】:2013-11-11 08:18:57
【问题描述】:

如何从像这样“2013-09-27 15:05:00”这样的 NSString 中获取月、日、年、星期几、时间到单独的值?

例如 2013-09-27 15:05:00 NSString 月份:九月 NSString 年份:2013 NSString 日:27 NSString 工作日:星期一 NSString 时间:15:05:00

请帮帮我!

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: ios objective-c date nsstring nsdate


【解决方案1】:

您可以像@Mikael 所说的那样使用 NSDateComponents 来做到这一点,或者另一种方式是:

NSDateFormatter *df = [[NSDateFormatter alloc] init];

[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
 NSDate *myDate = [df dateFromString: @"2013-09-27 15:05:00"];

[df setDateFormat:@"dd"];

myDayString = [df stringFromDate:myDate];

[df setDateFormat:@"MMM"];

myMonthString = [df stringFromDate:myDate];

[df setDateFormat:@"yy"];

myYearString = [df stringFromDate:myDate];

[df setDateFormat:@"HH:mm:ss"];

myTimeString = [df stringFromDate:myDate];

[df release];

【讨论】:

    【解决方案2】:

    首先你需要一个NSDateNSString,然后你可以用NSDateComponents 分隔值

    应该这样做:

    NSCalendar *sysCalendar = [NSCalendar currentCalendar];
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *myDate = [df dateFromString: @"2013-09-27 15:05:00"];
    
    unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *breakdownInfo = [sysCalendar components:unitFlags fromDate:myDate];
    

    【讨论】:

    • 太棒了!谢谢米凯尔!
    【解决方案3】:

    使用 dateFromString:NSDateFormatter 类的方法。您将获得 NSDate 对象。拥有它后,您可以随心所欲地进一步使用它。这基本上是一个日期和时间解析器,每种情况都有一堆选项。编写自己的解析器是个坏主意...

    完整阅读 Apple 开发者文档中的 Date and Time Programming Guide。日期和时间不是小事,明智的做法是充分了解如何在不同情况下处理这些信息,尤其是在编写国际应用程序时。

    【讨论】:

      【解决方案4】:

      未经测试的代码,但它应该可以工作..请尝试

      NSCalendar *myCalendar = [NSCalendar currentCalendar];
      NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
      [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
      NSDate *myDate = [dateFormatter dateFromString: @"2013-09-27 15:05:00"];
      
      NSDateComponents *dateComponents = [calendar components:NSDayCalendarUnit|NSMonthCalendarUnit|NSYearCalendarUnit fromDate:myDate];
      
      NSString *day = [NSString stringWithFormat=@"%d", [dateComponents day]];
      NSString *month = [NSString stringWithFormat=@"%d", [dateComponents month]];
      NSString *year = [NSString stringWithFormat=@"%d", [dateComponents year]];
      

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 1970-01-01
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多