使用 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 文件中解析日期/时间戳的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSDateFormatter 管理日期

OpenGL - 从 DisplayList 转换为使用 VBO

NSDateFormatter dateFromString 格式字符串问题

从 OpenCL 内核修改 VBO 数据

当我尝试从 vbo 获取颜色时,glDrawElements 没有输出

将事件添加到日历时,NSDateFormatter 未正确格式化日期