JavaScript 如何将CFAbsoluteTime转换为日期对象

JavaScript 如何将CFAbsoluteTime转换为日期对象

CFAbsoluteTime是苹果设备和Swift等编程语言上的标准时间格式。它存储自2001年1月1日以来的纳秒数。在本质上,它类似于时期时间,只是它将时间存储得更接近于现代日,以2001年作为参考点,而不是1970年。这是苹果关于CFAbsoluteTime的官方文档。

要将CFAbsoluteTime转换为日期对象,反之亦然,我们主要使用JavaScript的Date.getTime()方法,它提供自1970年1月1日以来的毫秒数。我们还将使用Date.setTime()方法,它设置自1970年1月1日以来的毫秒数。

从CFAbsoluteTime转换为日期对象

要从CFAbsoluteTime转换为普通日期,我们可以从2001年1月1日创建一个日期对象,然后将CFAbsoluteTime值(以毫秒为单位)添加到Date.getTime()值。

const CFAbsoluteTimeToDate = (CFATime, 
    unitConversionValue = 1000) => { 
    const dt = new Date('January 1 2001 GMT'); 
    dt.setTime(dt.getTime() + CFATime * unitConversionValue); 
    return dt; 
}; 
  
console.log(CFAbsoluteTimeToDate(639494700)); 

输出:

2021-04-07T13:25:00.000Z

从Date对象转换为CFAbsoluteTime

要将其转换回CFAbsolute时间,我们可以简单地将日期和2001年1月1日的Date.getTime()值相减,然后将该值从毫秒转换为纳秒。

const DateToCFAbsoluteTime = (dt, 
    unitConversionValue = 1000) => { 
    const CFADate = new Date('January 1 2001 GMT'); 
  
    // unitConversionValue; 
    return (dt.getTime() - CFADate.getTime()); 
}; 
  
console.log(DateToCFAbsoluteTime( 
    new Date("April 5 2021"))); 

以毫秒或纳秒为单位使用CFAbsoluteTime

一些版本的CFAbsoluteTime以毫秒或纳秒而不是秒为单位存储。要使用这些类型,只需将unitConversionValue参数的值更改如下:

Storage Type unitConversionValue
Seconds 1000
Milliseconds 1
Nanoseconds 0.000001

默认情况下,该程序将使用秒作为最常见的CFAbsoluteTime存储类型。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程