日期和时间从2016年5月31日04:30 PM(当前格式)转换为2016-05-31T16:30:00.000 + 05:30(所需格式)

时间:2016-05-27 08:45:19

标签: ios objective-c nsdate nsdateformatter

嗨,任何可以帮助我实现这是我有的字符串2016年5月31日04:30 PM(NSSTring)2016-05-31T16:30:00.000 + 05:30(必填格式)

NSString *dateString = dateandtime; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:dateString];

使用以下代码但返回nil

4 个答案:

答案 0 :(得分:1)

当前格式字符串不包含任何时区信息,因此您必须在日期格式化程序中设置时区以及能够独立于当前解析字符串的语言环境区域设置。

输入格式为dd MMM yyyy hh:mm a

 NSString *dateString = @"31 May 2016 04:30 PM";
 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
 dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:19800];
 dateFormatter.dateFormat = @"dd MMM yyyy hh:mm a";
 NSDate *dateFromString = [dateFormatter dateFromString:dateString];
 dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
 NSString *stringFromDate =  [dateFormatter stringFromDate:dateFromString];

答案 1 :(得分:0)

我尝试和工作的方式

    NSString *myString = dateandtime;
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"dd MMM yyyy hh:mm a";
    NSDate *yourDate = [dateFormatter dateFromString:myString];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ";
    NSLog(@"%@",[dateFormatter stringFromDate:yourDate]);

答案 2 :(得分:0)

无论您做什么,如果用户没有使用印度时区,并且用户在手机上使用24小时而不是AM / PM,请测试您的代码是否有效。我假设你的" dateandtime"是通过将NSDate转换为NSString创建的;不这样做会好得多,但从最初的NSDate开始。

答案 3 :(得分:-1)

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

NSString *currentDateString = @"2016-05-31T16:30:00.000+05:30";
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"];        
NSDate *currentDate = [dateFormatter dateFromString:currentDateString];

NSLog(@"CurrentDate:%@", currentDate);

您可以使用此代码。

相关问题