0

我正在使用以下代码尝试在表格单元格中显示时间。

TimeSlot *timeSlot = [timeSlots objectAtIndex:indexPath.row];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSLog(@"Time: %@", timeSlot.time);
NSDate *mydate = timeSlot.time;
NSLog(@"Time: %@", mydate);
NSString *theTime = [timeFormat stringFromDate:mydate];
NSLog(@"Time: %@", theTime);

日志输出是这样的:

  • 2010-04-14 10:23:54.626 MyApp[1080:207] 时间:2010-04-14T10:23:54
  • 2010-04-14 10:23:54.627 MyApp[1080:207] 时间:2010-04-14T10:23:54
  • 2010-04-14 10:23:54.627 MyApp[1080:207] 时间:(空)

我是为 iPhone 开发的新手,因为它全部编译时没有错误或警告,我不知道为什么我在日志中得到 NULL。这段代码有什么问题吗?

谢谢

更多信息

我完全使用了您的答案 lugte098 中的代码来检查并且我得到了日期,这让我相信我的 TimeSlot 类不能在它的 NSDate 属性中正确设置日期。所以我的问题变成了 - 我如何从 XML 设置 NSDate 属性?

我有这个代码(缩写):

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *) string {
 if ([currentElement isEqualToString:@"Time"]) {
  currentTimeSlot.time = string
 }
}

谢谢

4

3 回答 3

3

根据编辑的问题:

您正在将 XML 中的字符串设置到您的timeSlot对象中。 NSDateFormatter期望给出一个NSDate格式,所以这就是你原来的问题失败的原因。

所以你要问第二个问题,即如何从 NSString 创建一个 NSDate。请参阅文档,您可以使用dateFromString:,getObjectValue:forString:range:error:getObjectValue:forString:errorDescription:. 所以:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
currentTimeSlot.time = [df dateFomString:string];

如果它是 nil,你应该使用错误返回方法之一。

于 2010-04-14T10:58:00.357 回答
0

这可能会有所帮助:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
于 2010-04-14T09:52:07.970 回答
-2

你需要设置

[timeFormat setDateFormat:@"dd MMMM YYYY"];

NSString *theTime = [timeFormat stringFromDate:mydate];

这条线

于 2010-04-14T09:53:22.153 回答