2015-06-23 132 views
-3

我试图将NSString转换为NSDate,如下所示。将NSString转换为NSDate

NSString *startTime值是2015-06-23T01:37:53Z
NSDate *startTimeDate值为。代码有什么问题?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"PST"]]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 
NSDate *startTimeDate = [dateFormatter dateFromString:startTime]; 
+4

只需从您的格式中移除'.SSS'。我希望它会起作用。 – VRAwesome

回答

4

检查您的日期格式

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"]; 

变化成

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

斯威夫特

检查您的日期格式

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 

变化成

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
+0

这是不正确的。不要在格式字符串中引用'Z'。 – rmaddy

0

其简单的一个,转换NSStringNSDate我们使用NSDateformatter使用dateFromString方法。我们需要提供NSDateFormatter风格与现有的样式为NSString

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSDate *date = [dateFormatter dateFromString:@"2013-02-01T06:25:47Z"]; 
NSTimeZone *pdt = [NSTimeZone timeZoneWithAbbreviation:@"PDT"]; 
[dateFormatter setTimeZone:pdt]; 
[dateFormatter setDateFormat:@"HH:mm:ss zzz"]; 
[dateFormatter setDateFormat:@"K:mm a, z"]; 
NSString * updated String = [dateFormatter stringFromDate:date]; 
+0

@AshishKakkad你真的搞砸了这个人稍微回答我已经纠正。 'Bhumika'尽管在底线上仍然有一个错字。 – Popeye

+0

@Popeye好吧,谢谢您的指点 –

+0

@AshishKakkad这不是一个巨大的问题,只是我认为他们发生了一个错字。快乐的编码。 – Popeye

1

您指定没有任何毫秒,因此要使用的日期格式的开始时间:如果你想支持

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

两种样式的XML日期字符串,那么我建议为两种日期格式创建两个NSDateFormatter实例,如果您从第一个日期获得零,请尝试另一个。

+0

这是不正确的。不要在格式字符串中引用'Z'。 – rmaddy

+0

@rmaddy很好的皮卡,我从 – SomeGuy

1

至少有2个问题与您的日期格式:

  • .SSS用于读取毫秒,但变量startTime不包含毫秒值;

  • Z代表GMT时区并且不能在dateFormat字符串中转义。

让我们尝试解决这个问题ussues:

 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 
    NSDate *startTimeDate = [dateFormatter dateFromString:startTime]; 


我建议使用此​​。这是非常全面和有益的。

+0

格式中删除了正确识别问题并正确处理时区的唯一答案。 – rmaddy