【问题标题】:what will be formatter string for these date string?这些日期字符串的格式化程序字符串是什么?
【发布时间】:2014-07-18 12:59:35
【问题描述】:

我从RSS 提要中获取日期字符串,喜欢这些

 1- "Saturday, May 10, 4pm - Wednesday, May 14, 2014, 5pm"
 2- "Wednesday, April 30, 2014, 5 - 6am"

我可以使用NSDateFormatter 从这些字符串中获取NSDate 吗?

有人帮我解决这个问题吗?

更新

//
NSString *completeString = @"Saturday, May 10, 4pm - Wednesday, May 14, 2014, 5pm";

NSArray *array = [completeString componentsSeparatedByString:@"-"];

NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter1 setDateFormat:@"EEEE, MMM dd, ha"];
NSDate *date1 = [dateFormatter1 dateFromString:[array firstObject]];

// second date
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
dateFormatter2.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter2 setDateFormat:@"EEEE, MMM dd, YYYY, ha"];

NSDate *date2 = [dateFormatter2 dateFromString:[array lastObject]];

NSString *thirdString = @"Wednesday, April 30, 2014, 5 - 6am";
NSDateFormatter *dateFormatter3 = [[NSDateFormatter alloc] init];
dateFormatter3.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter3 setDateFormat:@"EEEE, MMM dd, YYYY, h - ma"];

NSDate *date3 = [dateFormatter3 dateFromString:thirdString];

NSLog(@"first date---%@", date1); 
NSLog(@"second date--%@", date2);
NSLog(@"third date---%@", date3);

第一次约会---2000-05-10 10:30:00 +0000

第二个日期--2013-12-25 11:30:00 +0000

第三天---2013-12-24 23:36:00 +0000

【问题讨论】:

  • 你有没有尝试过?
  • 实际上,我不知道。我应该如何尝试解决它。如果你能给出任何想法。我怎么能解决它。
  • 那些查看时间间隔而不是单个日期。
  • 你没有得到日期字符串。您正在获取带有日期范围的字符串。
  • 好的。您作为示例提供的这两个字符串中有一个模式:日期之间的破折号(-)。所以你可以用这个字符分割字符串。然后将第一个解析为有效日期。应该检查字符串的第二块是否与某个正则表达式匹配,以确定您在其中指定了多少日期。然后解析它。

标签: ios objective-c nsdate nsdateformatter


【解决方案1】:

您即将到来的日期字符串,其格式为 5 月 10 日星期六下午 4 点,其格式为 EEEE, MMM dd, Ha,因此首先您将当前日期格式设置为 EEEE, MMM dd, Ha,然后您可以使用它做任何您想做的事情用新格式转换的字符串日期。例如贝娄;

NSString *dateStr = @"Saturday, May 10, 4pm";
// Convert string to date object
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
dateFormat.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormat setDateFormat:@"EEEE, MMM dd, ha"];
NSDate *date = [dateFormat dateFromString:dateStr];

// Convert date object to desired output format
[dateFormat setDateFormat:@"EEE, MMm dd, h a"];
NSString *StrTime = [dateFormat stringFromDate:date];


NSLog(@" =%@",StrTime);

5 月 10 日星期六下午 4 点开始,星期三 050 10 点 04 点输出

在您的问题中,1. 是两个字符串而不是您可以创建的单个日期字符串,例如:

[NSString stringWithFormat:@"%@ - %@", StrTime, StrTime];

更新:

第二个2014 年 4 月 30 日,星期三,早上 5 点到 6 点,其日期格式应如下所示:

EEEE, MMM dd, YYYY, h - ma

同样,您可以将这个 foarat 转换为其他。

【讨论】:

  • 不是HH,而是hHH是24小时格式,前导0,其中h与AM/PM一起使用。还有问题如何从字符串到NSDate,它应该与建议格式一起使用,但是你需要添加一个本地,因为有英文日期和月份,所以添加:dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
  • @pawan 为什么不呢?格式为YYYY,别忘了设置本地。如果不设置本地,非英文设备上的 iOS 将不知道如何处理日期和月份名称。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多