我试图从一个看起来像@"2016-05-12T16:25:55.000Z"
的字符串中获得时间。我试过这样的方法:
NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = @"HH:mm";
formatter.timeZone = [NSTimeZone systemTimeZone];
NSDate *serverDate = [formatter dateFromString:dateString];
NSString* time = [formatter stringFromDate:serverDate];
NSLog(@"Time: %@", time);
但是我的serverDate
正在返回null
。我不知道我做错了什么。
发布于 2016-05-12 08:45:01
当您从一个NSDate
创建一个NSString
时,日期格式必须完全匹配整个字符串。
但你的目标似乎是把时间当作一根线。所以只需得到子字符串:
NSString *time = [dateString substringWithRange:NSMakeRange(11, 5)];
当然,这不会以任何方式处理时区。如果您希望将原始字符串解析为NSDate
,然后获得从该日期开始的时间,所有这些都需要进行时区调整,那么您需要两种日期格式。一个将原始字符串解析为一个NSDate
,另一个解析第二个(您已经拥有的字符串),以生成具有所需输出的新字符串(本例中的时间)。
发布于 2016-05-12 08:50:42
可以将格式化程序的dateFormat属性设置为:@"yyyy-MM-dd'T'HH:mm:ssZ"
,然后使用NSDateComponents获取时间值。
发布于 2016-05-12 09:45:49
首先将您的日期转换为NSDate
+ (NSDate *) convertDateToNSDateWithGivenFormat: (NSString *) dateStr Format:(NSString*) format
{
NSDateFormatter *dateFormatterDate = nil;
NSDate *dateonly = nil;
if (dateFormatterDate == nil) {
dateFormatterDate = [[NSDateFormatter alloc] init];
[dateFormatterDate setDateFormat:format];
}
dateonly = [dateFormatterDate dateFromString:[NSString stringWithFormat:@"%@", dateStr]];
return dateonly;
}
然后使用NSDate变量拆分日期和时间。
+ (NSString *) GetFormattedTimeStringForGivenDate:(NSDate *) date
{
NSString *retStr = nil;
NSDate *now = date;
NSDateFormatter *dateFormatterDateOnly = nil;
NSDateFormatter *dateFormatterTimeOnly = nil;
if (dateFormatterDateOnly == nil) {
dateFormatterDateOnly = [[NSDateFormatter alloc] init];
[dateFormatterDateOnly setDateFormat:@"MM/dd/yyyy"];
}
if (dateFormatterTimeOnly == nil) {
dateFormatterTimeOnly = [[NSDateFormatter alloc] init];
[dateFormatterTimeOnly setDateFormat:@"hh:mm:ss:a"];
}
//if you need date use this
//retStr = [NSString stringWithFormat:@"%@", [dateFormatterDateOnly stringFromDate:now]];
retStr = [NSString stringWithFormat:@"%@", [dateFormatterTimeOnly stringFromDate:now]];
return retStr;
}
举个例子。您可以根据需要更改格式:
NSDate *myDt = [MyClass convertDateToNSDateWithGivenFormat: @"2016-05-12T16:25:55" Format:@"yyyy-MM-dd'T'HH:mm:ss"];
NSString *str = [MyClass GetFormattedTimeForGivenDate:myDt];
https://stackoverflow.com/questions/37192714
复制相似问题