如何从 NSString 获取 NSTimeInterval?
How to get NSTimeInterval from NSString?
我正在尝试将以下字符串“2016-05-15T14:40:43.447”转换为 NSDate
但它并非 NSDateFormatter
总是 returns nil
。
这就是我目前正在做的事情。
- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
if(!stringDate || ![stringDate length]) {
return 0.0f;
}
static NSDateFormatter *df = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
df = [NSDateFormatter new];
[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS"];
});
NSDate *date = [df dateFromString:stringDate];
// date is always returns nil.
return [date timeIntervalSince1970];
}
我试过设置以下格式:
yyyy-MM-dd'T'hh:mm:ss.SSS
yyyy-MM-dd'T'hh:mm:ssz
yyyy-MM-dd'T'hh:mm:ss Z
yyyy-MM-dd'T'hh:mm:ss.SSS Z
yyyy-MM-dd'T'hh:mm:ss.SSS z
但其中 none 有效。
我也检查了 What format string do I use for milliseconds in date strings on iPhone?,但没有帮助。
运气好吗?
试试这个代码
- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
if(!stringDate || ![stringDate length]) {
return 0.0f;
}
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.timeZone = [NSTimeZone localTimeZone];
df.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS";
NSDate *date = [df dateFromString:stringDate];
return [date timeIntervalSince1970];
}
14:40:43
是24小时格式,也就是大写的H
yyyy-MM-dd'T'HH:mm:ss.SSS
我正在尝试将以下字符串“2016-05-15T14:40:43.447”转换为 NSDate
但它并非 NSDateFormatter
总是 returns nil
。
这就是我目前正在做的事情。
- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
if(!stringDate || ![stringDate length]) {
return 0.0f;
}
static NSDateFormatter *df = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
df = [NSDateFormatter new];
[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSS"];
});
NSDate *date = [df dateFromString:stringDate];
// date is always returns nil.
return [date timeIntervalSince1970];
}
我试过设置以下格式:
yyyy-MM-dd'T'hh:mm:ss.SSS
yyyy-MM-dd'T'hh:mm:ssz
yyyy-MM-dd'T'hh:mm:ss Z
yyyy-MM-dd'T'hh:mm:ss.SSS Z
yyyy-MM-dd'T'hh:mm:ss.SSS z
但其中 none 有效。
我也检查了 What format string do I use for milliseconds in date strings on iPhone?,但没有帮助。
运气好吗?
试试这个代码
- (NSTimeInterval) timeIntervalFromDateString:(NSString *)stringDate {
if(!stringDate || ![stringDate length]) {
return 0.0f;
}
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.timeZone = [NSTimeZone localTimeZone];
df.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSS";
NSDate *date = [df dateFromString:stringDate];
return [date timeIntervalSince1970];
}
14:40:43
是24小时格式,也就是大写的H
yyyy-MM-dd'T'HH:mm:ss.SSS