将历元毫秒转换为 NSDate

Convert epoch milliseconds to NSDate

我想将自 1970 年 1 月 1 日以来经过的毫秒数转换为 NSDate 而不会丢失毫秒数。每个解决方案都表示将毫秒除以 1000 并使用 dateWithTimeIntervalSince1970。但我也想保持保留到毫秒。

dateWithTimeIntervalSince1970 的参数是 NSTimeInterval,它不是整数值(它是 double)。没有理由失去毫秒。执行除法时不要使用整数。

例如:

long long milliseconds = 1576058147753;
NSTimeInterval seconds = (NSTimeInterval)milliseconds / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocalizedDateFormatFromTemplate:@"dMMMMyyyyHHmmssSSS"];

December 11, 2019, 01:55:47.753

注意那里有 753 毫秒。

您可以在此获取日期 way.You 必须根据您的要求传递时间间隔和日期格式。

-(NSString *)getStringFromDate:(double)interval withFormat:(NSString*)format
{
    if (interval == 0)
    {
        return @"";
    }
    double seconds = interval;
    NSTimeInterval timeInterval = (NSTimeInterval)seconds;
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSDateFormatter* df_utc = [[NSDateFormatter alloc] init];
    [df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
    [df_utc setDateFormat:format];
    NSString *Date=[df_utc stringFromDate:date];
    return Date;
}

希望对您有所帮助。