【问题标题】:Parsing date/timestamp from VBO file with NSDateFormatter使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳
【发布时间】: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

标签: objective-c nsdate nsdateformatter vbo vbox


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 2010-12-23
    • 1970-01-01
    • 2016-07-23
    • 2014-10-12
    • 2018-06-20
    • 1970-01-01
    • 2020-12-29
    • 2021-06-14
    相关资源
    最近更新 更多