从字符串设置nsdate值时出现问题

时间:2011-06-27 09:49:23

标签: iphone xcode nsdate nsdateformatter

    NSDate *My_StartDate,*My_EndDate ;
NSDateFormatter * df= [[NSDateFormatter alloc]init];
[df setDateFormat:@"dd/MM/yyyy hh:mm:ss"];
My_StartDate = [df dateFromString:@"01/05/2010 10:15:33"];
My_EndDate = [df dateFromString:@"01/05/2010 10:45:33"];
NSLog(@"%@",My_StartDate);
NSLog(@"%@",My_EndDate);

在日志中我为my_startdate获取类似的内容,如2010-05-01 04:45:33 +0000,结束日期为2010-05-01 05:15:33 +0000而不是我应该有值开始日期为2010-05-01 10:15:33 +0000,结束日期为2010-05-01 10:45:33 +0000

5 个答案:

答案 0 :(得分:1)

尝试使用以下功能:

-(NSString *)getDateStringFromDate :(NSDate *)dateValue{
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setTimeStyle:NSDateFormatterShortStyle];

[timeFormat setDateFormat:@"HH:mm:ss"];
//[timeFormat setDateFormat:@"HH:mm"];  
//[timeFormat setDateFormat:@"HH:mm a"];    
////    

 NSString *theDate = [dateFormat stringFromDate:dateValue];
 NSString *theTime = [timeFormat stringFromDate:dateValue];

 NSLog(@"\n"          
 "theDate: |%@| \n"
 "theTime: |%@| \n"
 , theDate, theTime);

return theDate;
}

根据需要更改数据格式。

如有任何困难,请告诉我。

干杯。

答案 1 :(得分:0)

显示格式为GMT + 4.30时。它只显示那样。当您使用DateFormatter将该日期转换为字符串时,它会给出相同的日期(无论您想要的开始日期为01/05/2010 10: 15:33,结束日期为01/05/2010 10:45:33)。

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

然后你会得到输出为01/05/2010 10:15:33

答案 2 :(得分:0)

这显示的是遵循美国标准时间字符串的日期,但由于这个原因,您在制作逻辑时没有任何问题。此外

[df setDateFormat:@"dd/MM/yyyy hh:mm:ss"];

此格式使用12小时格式(表示下午2:03和凌晨2:03),日期对象从不使用am和pm来显示日期对象值,但是当您正确转换它时,它会为您提供正确的日期和时间。

如果您觉得遇到任何问题,请使用不同的区域设置。

答案 3 :(得分:0)

您可能需要在此处将日期格式化程序的时区设置为GMT。使用

进行
[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
在进行dateFromString:来电之前

。这会给你你想要的东西。

答案 4 :(得分:0)

只需在您的代码中更新:

我可能会认为你的时间是24小时格式,所以当时你需要使用这个....除此之外你需要设置时区。

点击此区域链接: http://unicode.org/reports/tr35/tr35-6.html#Date%5FFormat%5FPatterns

[df setDateFormat:@"dd/MM/yyyy hh:mm:ss"];
to 
[df setDateFormat:@"dd/MM/yyyy HH:mm:ss"];

你完成了;)