2017-04-13 49 views
-3

我已经试过这样我们得到字符串表单Web服务的字符串如何将NsString转换为NSDate的目标c?

cell.msgid.text=[[tableArray objectAtIndex:indexPath.row]objectForKey:@"MobileMessageMasterId"]; 

NSString *datefromweb= [[tableArray objectAtIndex:indexPath.row] objectForKey:@"MessageDateTime"]; 

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
[dateformatter setDateFormat:@"dd/MM/yyyy hh:mm:ss"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateformatter dateFromString:datefromweb]; 

[dateformatter setDateFormat:@"MMM yyyy"]; 

NSString *month1 = [dateformatter stringFromDate:dateFromString]; 
[dateformatter setDateFormat:@"hh:mm a"]; 

NSString *time= [dateformatter stringFromDate:dateFromString]; 
[dateformatter setDateFormat:@"dd"]; 

NSString *day1= [dateformatter stringFromDate:dateFromString]; 

我们得到datefromweb字符串(的NSString)变量,但在 datefromstring(的NSDate)变量没有得到,我分离出的日期,时间,一个月,年。

我的反应是

{ MessageDateTime = "19/01/2016 14:16:03";} 
+0

'NSDate * dateFromString = [[NSDate alloc] init];''dateFromString = [dateformatter dateFromString:...];'那里是无用的alloc/init。你需要更具体,但是在没有价值的情况下显示/调试你自己。我猜 ? 'dateFromString'是'nil',所以下面所有的结果都会混淆。这是因为小时格式:'hh'和'HH'。这是导致所有其他人无法工作的第一个问题。 – Larme

+0

解释你为什么投票@ downvoter –

回答

1

尝试这样的:

NSString *yourString = @""; // use your string here where you will get from JSON 
NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
[formatter setTimeZone:[NSTimeZone localTimeZone]]; // Set timezone whatever you want 
[formatter setDateFormat:@"dd/MM/yyyy HH:mm:ss"]; 
NSDate *convertedDate = [formatter dateFromString:yourString]; 
NSLog(@"%@",convertedDate); 
1
//Get Date string from web 

NSString *datefromweb= @"19/01/2016 14:16:03"; 


//Set Date Formatter 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"dd/MM/yyyy HH:mm:ss"]; 

//Convert string into Date 
NSDate *selectedDate = [df dateFromString: datefromweb]; 

//For Setting new format to NSDate need to create new NSDateFormatter. 

NSDateFormatter *df1 = [[NSDateFormatter alloc] init]; 

[df1 setDateFormat:@"dd"]; 
NSString* myDayString = [df1 stringFromDate:selectedDate]; 

[df1 setDateFormat:@"MMM"]; 
NSString* myMonthString = [df1 stringFromDate:selectedDate]; 

[df1 setDateFormat:@"MM"]; 
NSString* myMonthString1 = [df1 stringFromDate:selectedDate]; 

[df1 setDateFormat:@"yyyy"]; 
NSString* myYearString = [df1 stringFromDate:selectedDate]; 


[df1 setDateFormat:@"hh:mm a"]; 
NSString* myTimeString = [df1 stringFromDate:selectedDate]; 

输出:

Date 19 
Month Name Jan - 01 
Year 2016 
Time 02:16 PM 
0

使用NSDateComponents是更好的方法

NSDateFormatter *formatter = [NSDateFormatter new]; 
[formatter setDateFormat:@"dd/mm/yyyy HH:mm:ss"]; 
NSDate *date = [formatter dateFromString:@"19/01/2016 14:16:03"]; 
NSCalendar *gregorian = [NSCalendar currentCalendar]; 
NSDateComponents *comonents = 
[gregorian components:(NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond 
         ) fromDate:date]; 
NSInteger day = [comonents day]; 
NSInteger month = [comonents month]; 
NSInteger year = [comonents year]; 
NSInteger hour = [comonents hour]; 
NSInteger minutes = [comonents minute]; 
NSInteger seconds = [comonents second];