目标c中的组合日期和时间

时间:2013-12-30 20:49:10

标签: ios objective-c nsstring nsdate nsdateformatter

我正在为我的iPhone应用程序使用Gdata库并获取Google事件,但Google将返回日期为 2014-01-02T13:00:00-06:00 。这是一个字符串。

如何在单独的字符串中显示“ 2014-01-02 ”和“ 13:00 ”?

由于

1 个答案:

答案 0 :(得分:1)

如果您真正想要的只是字符串表示:

NSString *googleDataString = @"2014-01-02T13:00:00-06:00";
NSArray  *dataTimePair = [googleDataString componentsSeparatedByString:@"T"];
NSString *dateString = dataTimePair[0];
NSString *timeString = dataTimePair[1];
NSArray  *timeParts = [timeString  componentsSeparatedByString:@":"];
timeString = [NSString stringWithFormat:@"%@:%@", timeParts[0], timeParts[1]];
NSLog(@"date: %@, time: %@", dateString, timeString);

NSLog输出:
日期:2014-01-02,时间:13:00

但是,我建议您从googleDataString创建NSDate,然后使用NSDateFormatter获取日期和时间字符串。特别是如果您要将日期/时间用于显示的任何内容。

NSString *googleDataString = @"2014-01-02T13:00:00-06:00";
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:sszzz"];
NSDate *dateTimeString = [dateFormatter dateFromString:googleDataString];

[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateString = [dateFormatter stringFromDate:dateTimeString];

[dateFormatter setDateFormat:@"HH:mm"];
NSString *timeString = [dateFormatter stringFromDate:dateTimeString];

NSLog(@"date: %@, time: %@", dateString, timeString);

NSLog输出:
日期:2014-01-02,时间:14:00

注意:NSDate以GMT格式保留日期/时间,日期/时间显示在本地时区或NSDateFormatter实例上设置的指定时区。我在-05:00(美国东部时间),所以显示的日期比google时间晚了一个小时,即时间区-06:00。