将NSString转换为NSDate

时间:2015-06-23 06:42:58

标签: ios objective-c swift

我正在尝试将NSString转换为NSDate,如下所示。

NSString *startTime的值为 2015-06-23T01:37:53Z

NSDate *startTimeDate的值为 nil 。代码有什么问题?

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 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

您指定的startTime没有任何毫秒,因此您希望使用dateFormat:

In [115]: A
Out[115]: 
array([[ 0.1001229 ,  0.77201334,  0.19108671,  0.83574124],
       [ 0.23873773,  0.14254842,  0.1878178 ,  0.32542199],
       [ 0.62674274,  0.42252403,  0.52145288,  0.75656695],
       [ 0.24917321,  0.73416177,  0.40779406,  0.58225605],
       [ 0.91376553,  0.37977182,  0.38417424,  0.16035635]])

In [116]: B
Out[116]: array([ 0.18675642,  0.3073746 ,  0.32381341,  0.01424491])

In [117]: out
Out[117]: array([-0.39788555, -0.95916359, -0.93824771,  0.02198139,  0.23052277])

In [118]: np.corrcoef(A[0],B), np.corrcoef(A[1],B), np.corrcoef(A[2],B)
Out[118]: 
(array([[ 1.        , -0.39788555],
       [-0.39788555,  1.        ]]),
 array([[ 1.        , -0.95916359],
       [-0.95916359,  1.        ]]),
 array([[ 1.        , -0.93824771],
       [-0.93824771,  1.        ]]))

如果你想支持这两种XML日期字符串样式,那么我建议为这两种日期格式创建两个NSDateFormatter实例,如果你从第一种格式中获得nil,则尝试另一种。

答案 2 :(得分:1)

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

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

  • Z代表 GMT 时区,不得在dateFormat字符串中进行转义。

让我们试着解决这个问题:


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

我建议使用此NSDateFormatter date formatting table。它非常全面和有用。

答案 3 :(得分:0)

简单的一个,将NSString转换为NSDate,我们使用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];