Che*_*C D 4 objective-c nsdate nsdateformatter ios
我必须从字符串中获取日期,这里的字符串格式为"2013年12月2日星期一"我必须将其转换为"2013-12-2".我使用了以下代码,但输出错误:
-(void)dateSelectedInPickerView:(NSString *)dateSelected{
NSDateFormatter *dateFormatterForGettingDate = [[NSDateFormatter alloc] init];
[dateFormatterForGettingDate setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
// Parse the string representation of the date i.e Monday 2,Dec 2013
NSDate *dateFromStr = [dateFormatter dateFromString:dateSelected];
NSLog(@"date selected : %@",dateFromStr);
NSDateFormatter *tempFormatter=[[NSDateFormatter alloc]init];
[tempFormatter setDateFormat:@"YYYY-MM-dd"];
self.reservationDateSelected=[tempFormatter stringFromDate:dateFromStr];
NSLog(@"date Selected : %@",self.reservationDateSelected);
}
Run Code Online (Sandbox Code Playgroud)
试试这个,它适用于我Monday 02,Dec 2013:
-(void)dateSelectedInPickerView:(NSString *)dateSelected{
NSDateFormatter *dateFormatterForGettingDate = [[NSDateFormatter alloc] init];
[dateFormatterForGettingDate setDateFormat:@"EEEE dd,MMM yyyy"];
[dateFormatterForGettingDate setLocale:[NSLocale localeWithLocaleIdentifier:@"EN"]];
// Parse the string representation of the date i.e Monday 2,Dec 2013
NSDate *dateFromStr = [dateFormatterForGettingDate dateFromString:dateSelected];
NSLog(@"date selected : %@", [dateFromStr descriptionWithLocale:[NSLocale currentLocale]]);
NSDateFormatter *tempFormatter=[[NSDateFormatter alloc]init];
[tempFormatter setDateFormat:@"yyyy-MM-dd"];
self.reservationDateSelected=[tempFormatter stringFromDate:dateFromStr];
NSLog(@"date Selected : %@",self.reservationDateSelected);
}
Run Code Online (Sandbox Code Playgroud)
1)你应该使用yyyy,而不是YYYY.YYYY代表基于"年度周"的日历中的年份 - 它可能并不总是与日历年相同的值.请参阅文档.
2)解析"2013年12月2日星期一"的格式应为"EEEE dd,MMM yyyy"
编辑3)忘记关于语言环境 - 如果您不明确设置日期格式化程序的语言环境,那么具有非英语语言环境的设备将无法解析"2013年12月2日星期一"(因为"星期一"和"12月")
NSDateFormatter *dateFormatterForGettingDate = [[NSDateFormatter alloc] init];
dateFormatterForGettingDate.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatterForGettingDate setDateFormat:@"EEEE dd,MMM yyyy"];
Run Code Online (Sandbox Code Playgroud)
我认为,这应该工作:
-(void)dateSelectedInPickerView:(NSString *)dateSelected{
NSDateFormatter *dateFormatterForGettingDate = [[NSDateFormatter alloc] init];
dateFormatterForGettingDate.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatterForGettingDate setDateFormat:@"EEEE dd,MMM yyyy"];
// Parse the string representation of the date i.e Monday 2,Dec 2013
NSDate *dateFromStr = [dateFormatter dateFromString:dateSelected];
NSLog(@"date selected : %@",dateFromStr);
NSDateFormatter *tempFormatter=[[NSDateFormatter alloc]init];
[tempFormatter setDateFormat:@"yyyy-MM-dd"];
self.reservationDateSelected=[tempFormatter stringFromDate:dateFromStr];
NSLog(@"date Selected : %@",self.reservationDateSelected);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5719 次 |
| 最近记录: |