【问题标题】:Combined date and time in objective c [closed]目标c中的组合日期和时间[关闭]
【发布时间】:2014-01-17 19:08:19
【问题描述】:

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

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

谢谢

【问题讨论】:

  • NSString 文档有一个“查找字符和子字符串”部分...
  • 当然,更明智的做法可能是使用 NSDateFormatter 创建 NSDate,然后将其格式化为您想要的样式。
  • 但无论如何,我们希望您在来寻求帮助之前尝试一些事情。
  • @HotLicks - 伙计,我确实在谷歌上搜索过,但其他人没有相同的格式。 'T' 是这里令人困惑的部分。
  • @MartinR - 我知道 NSString 有“查找字符和子字符串”,我不想查找和删除字符串,我想通过 NSDateFormatter 来完成

标签: ios objective-c nsstring nsdate nsdateformatter


【解决方案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(美国东部标准时间),所以显示的日期比时区 -06:00 中的谷歌时间晚一小时。

【讨论】:

  • 谢谢哥们... NSDateFormatter 服务更好....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多