使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳
Posted
技术标签:
【中文标题】使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳【英文标题】:Parsing date/timestamp from VBO file with NSDateFormatter 【发布时间】:2018-02-27 10:03:05 【问题描述】:我试图弄清楚这种时间戳格式,但我觉得它很奇怪。
该格式有一个时间戳:184930.60 解释是:“这是自午夜以来的 UTC 时间,格式为 HH:MM:SS.SS。”
它看起来像秒数(基于文件更改,对于 20Hz GPS 模块),但是当您转换这些秒时,它是 51h,而这不能是午夜后的 51h。
知道如何将其转换为 nsdate 吗?
文件格式详情:https://racelogic.support/01VBOX_Automotive/01General_Information/Knowledge_Base/VBO_file_format
【问题讨论】:
我认为他们的意思是184930.60
是 18h 49m 30s(其余的是 60 小数秒)。所以dateFormat应该是HHmmss.SS
【参考方案1】:
这是工作示例:
-(NSDate *)getDateFromDecimalTime:(double)decimalTime
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HHmmss.SS"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
NSDate *date = [formatter dateFromString:[NSString stringWithFormat:@"%f", decimalTime]];
//gather current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
//gather date components from date
NSDateComponents *dateComponents = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:date];
// Get current year/day/month
NSDate *now = [NSDate date];
// Specify which units we would like to use
unsigned units = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSCalendar *calendar2 = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar2 components:units fromDate:now];
//set date components
[dateComponents setDay:[components day]];
[dateComponents setMonth:[components month]];
[dateComponents setYear:[components year]];
//save date relative from date
NSDate *completeDate = [calendar dateFromComponents:dateComponents];
return completeDate;
【讨论】:
以上是关于使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳的主要内容,如果未能解决你的问题,请参考以下文章
OpenGL - 从 DisplayList 转换为使用 VBO
NSDateFormatter dateFromString 格式字符串问题