Python - Excel - Matlab 时间戳的相互转换

时间:2024-03-19 10:23:50

时间戳:通俗来讲是指一个能表示一份数据在某个特定时间点已经存在的、 完整的、 可验证的数据。

 

最常见,可读性最好的时间戳为字符串型时间戳,比如:

2018年05月16日 13点26分53秒

2018/05/16 13:26:53

 

但实际实际使用过程中,字符串时间戳存在较大的弊端,比如存储空间较大至少需要15个以上的字节,日期前后比较困难(比如A日期在B日期之前还是之后),计算相差时间较为困难(A、B日期之间相差多少秒)。基于以上,程序员通常使用浮点型数据表示时间戳(float32或float64),但是在不同软件中浮点型时间戳的计算并不相同,也就需要知道不同软件之间时间戳的相互转化。

 

这里以UTC时间为例,也就是我们的Windows系统时间是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。也即1970年01月01日00时00分00秒的浮点时间戳为00000.000秒。

 

从上面我们就可以看出浮点数字时间戳需要注意3点:

1、起始时间,即xxxx年xx月xx日 xx时xx分xx秒为0.000或1.0000等;

2、单位,即浮点数字中的1单表是1秒还是1小时还是1天;

3、时区,即全球24个时区,相邻时区相差1小时。

 

对于Python - Excel – Matlab 的浮点型时间戳对于以上3点我们做以下统计结果(其中Excel时间即代表Windows系统时间):

1、起始时间

       Python起始时间为1970-01-01 08:00:00,对应浮点时间为0.0

Python - Excel - Matlab 时间戳的相互转换

       Excel:起始时间为1900-01-01 00:00:00,对应浮点时间为1.0000

Python - Excel - Matlab 时间戳的相互转换

Matlab:起始时间为0000-01-00 00:00:00,对应浮点时间为0.0000

Python - Excel - Matlab 时间戳的相互转换

2、单位

       Python1代表1秒

Python - Excel - Matlab 时间戳的相互转换

 

Excel:1代表1天

Python - Excel - Matlab 时间戳的相互转换

Matlab:1代表1天

Python - Excel - Matlab 时间戳的相互转换

3、时区

       从第1、2点来看,仅Python的浮点时间戳和当地时区有关,北京时区为 东+8区,因此开始的0.00时间为08:00:00,而Excel和Matlab均使用0时区。

 

Python - Excel - Matlab 时间戳的相互转换

由于个人经常使用Python时间戳,因此在这里只给出Python – Excel和Python – Matlab时间戳的相互转换,其他转换可以同理推出。

  1. Python - Excel时间戳的相互转换:

Excel 和 Python的起始时间相差70年又8小时,且单位比例为 1天=86400秒,故:

Python - Excel - Matlab 时间戳的相互转换

       PyTime = (ExcelTime - 25569.3333333)*86400

       ExcelTime = PyTime /86400 + 25569.3333333

  1. Python - Matlab时间戳的相互转换:

 

Matlab 和 Python的起始时间相差1970年又8小时,且单位比例为 1天=86400秒,故:

Python - Excel - Matlab 时间戳的相互转换

MatTime = PyTime /86400 + 719529.333333333

PyTime = (MatTime - 719529.333333333)*86400

 

验证:

以2018/05/16 13:26:53 时间为例:

Python 时间戳为:1526448413.0

通过计算:

ExcelTime =  43236.560336

Python - Excel - Matlab 时间戳的相互转换

 

MatTime = 737196.5603356478

Python - Excel - Matlab 时间戳的相互转换

 

由于转换存在约等数据,故精度可以达到秒级相同,毫秒级可能存在误差。