我需要转换格式为#34的NSString对象; 10月14日星期二和#34;到NSDate,格式"星期二,10月14日"。这就是我试过的,
NSString *day = @"Tuesday 14th October";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:@"EEEE, dd MMM"];
NSArray *dateComponets = [day componentsSeparatedByString:@" "];
NSString *dayOfTheWeek = dateComponets[0];
NSString *date = [dateComponets[1] substringToIndex:2];
NSString *month = [dateComponets[2] substringToIndex:3];
NSString *newDay = [NSString stringWithFormat:@"%@, %@ %@", dayOfTheWeek,date, month];
NSDate *newDate = [dateFormatter dateFromString:newDay];
NSLog(@"date : %@", [dateFormatter stringFromDate:newDate]);
它似乎有效,但我觉得它有点笨拙......你们知道更优雅/更好/标准的方式在iOS中这样做吗?
答案 0 :(得分:0)
没有" NSDate of firmat X&#34 ;;你从根本上没有理解NSDate
。这是一个时间戳。它及时确定了一个客观的目标。它没有格式。
只需使用NSDateFormatter
即可实现您想要做的任何事情。它可以将字符串解析为日期,反之亦然。不要编写自己的hacky文本解析。不要碰NSDateComponents
。
答案 1 :(得分:0)
将NSDate存储在核心数据中 - 所以:
NSString *day = @"Tuesday 14th October";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE dd MMM"];
myCoreDataObject.savedDate = [dateformatter dateFromString: day];
如果要显示它,请执行相反操作:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEEE, dd MMM"];
myLabel.text = [dateformatter stringFromDate: myCoreDataObject.savedDate];