到目前为止的转换时间问题

时间:2014-02-18 11:23:25

标签: ios iphone objective-c nsdateformatter

我有时间在甲酸盐“17-02-2014 05:00 PM”,现在我想在17-02-2014 05:00:00 +000转换它。我正在使用代码。 在此日期= 17-02-2014和时间= 05:00 PM

-(NSDate*)dateFromDate:(NSString*)date andTime:(NSString*)time{
    NSString *eventDttm = [[NSString alloc] init];
    eventDttm = [NSString stringWithFormat:@"%@ %@",date,time];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    NSLocale *local = [NSLocale currentLocale];
    [dateFormatter setLocale:local];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
    [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm a"];

    //conversion of NSString to NSDate

    NSDate *dateFromString = [[NSDate alloc] init];
    dateFromString = [dateFormatter dateFromString:eventDttm];

    return dateFromString;
}

使用此代码我将获得17-02-2014 11:00:00 +000

5 个答案:

答案 0 :(得分:4)

您可以使用此代码

NSString *str=@"17-02-2014 05:00 PM";
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm a"];
NSDate *datetoday=[dateFormatter dateFromString:str];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"];
NSString *strdate=[dateFormatter stringFromDate:datetoday];
 NSLog(@"%@",strdate);

答案 1 :(得分:2)

我认为您的问题是日期格式字符串中的"HH""HH"是24小时制,但您的输入时间为12小时。尝试使用"hh"

请参阅:http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns

顺便说一句,您的代码中有几个要创建新对象并立即丢弃的对象:

NSString *eventDttm = [[NSString alloc] init];

- 创建新的NSString对象并分配给eventDttm。

eventDttm = [NSString stringWithFormat:@"%@ %@",date,time];

- 创建另一个新的NSString对象,并将那个分配给eventDttm。现在不再引用在前一行创建的字符串,因此将在ARC中销毁,或在手动内存管理中放弃。

当您声明dateFromString时会发生同样的事情。

答案 2 :(得分:1)

将时间格式字符串从HH更改为hh。 你24小时的时候用的HH。在你的例子中,你只有12小时的时间。

答案 3 :(得分:1)

用以下代码替换你的代码......我在xcode中测试过,它给出了你想要的结果 您将获得“prettyDate”字符串中的结果。

   NSString *eventDttm = [[NSString alloc] init];
eventDttm = [NSString stringWithFormat:@"17-02-2014 05:00 PM"];

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm a"];



NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:eventDttm];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];
NSString *prettyDate = [dateFormatter stringFromDate:dateFromString];
prettyDate = [prettyDate stringByAppendingString:@" +000"];

让我知道它的工作与否!!!

快乐编码...... !!!

答案 4 :(得分:0)

请使用此代码,

NSString *dateStr = @"17-02-2014 05:00 PM";  
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];  
[dateFormatter1 setDateFormat:@"dd-MM-yyyy hh:mm a"];

NSDate *date = [dateFormatter1 dateFromString:dateStr];  
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];  
[dateFormatter2 setDateFormat:@"dd-MM-yyyy hh:mm:ssZZ"];

dateStr = [dateFormatter2 stringFromDate:date];
 NSLog(@"date : %@",dateStr);

使用此代码,您将获得字符串, 日期:17-02-2014 05:00:00 + 0530 感谢。