从表示日期的存储字符串中删除日期名称

时间:2012-02-09 17:33:34

标签: date format

我有数据进入我的应用程序,这是一个存储在字符串中的日期,如下所示: “2011年1月31日星期二上午10:15”。

我尝试过使用dateFromString,然后使用NSDateFormatter将其更改为另一种格式(理想情况下我希望它显示为hh:mm(24小时)dd / mm / yyyy)。我找不到删除工作日名称的方法,因此每当我尝试打印结果时,它都会显示为null。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
//is EEEE is for weekdays?

[df setDateFormat:@"EEEE-dd-MM-yyyy hh:mm a"];

NSDate *myDate = [df dateFromString:[[_feeds[_currentTableView] objectAtIndex:row] objectForKey:@"created"]];

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

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

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

NSString *theDate = [dateFormat stringFromDate:myDate];
NSString *theTime = [timeFormat stringFromDate:myDate];

NSLog(@"\n"
      "theDate: |%@| \n"
      "theTime: |%@| \n"
      , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];

任何人都可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:1)

您应该将问题隔离到解析或格式化。我的猜测是解析。这是您的示例字符串:

 "Tuesday 31st January 2011 10:15am"

你的格式:

 "EEEE-dd-MM-yyyy hh:mm a"

他们不匹配:

  • 示例文字中没有连字符
  • “31”之后有“st” - 我不知道你将如何处理
  • 这个月是作为名字而不是数字给出的,所以我怀疑你想要“MMMM”(如果iOS的格式说明符与我熟悉的其他格式说明符一样)
  • “15”和“am”
  • 之间没有空格

不考虑“st”部分,我怀疑你想要一种格式:

 "EEEE dd MMMM yyyy hh:mma"

...但我不知道你将如何优雅地处理“st”(或“th”或“nd”),除了明确地弄乱字符串。