我正在尝试将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];
答案 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];