gmtime和掩码数组

问题描述 投票:0回答:1

我有一个带有时间变量的数组:

time = masked_array(data=[5.89286318e+08, 5.89286330e+08, 5.89286342e+08, ...,
                   6.33450623e+08, 6.33450635e+08, 6.33450647e+08],
             mask=False,
       fill_value=1e+20)

时间是自2000年1月1日以来的秒数。所以我尝试了这个:

timestamp = datetime(2000, 1, 1, 0, 0, 0).strftime('%s')
timestamp = int(timestamp)
epoch_time = time.gmtime(time[0]+timestamp) 

这将导致AttributeError:'MaskedArray'对象没有属性'gmtime'。

有人知道如何解决此问题并以日期时间格式转换时间吗?

python datetime masked-array
1个回答
0
投票

您可以使用timestamp()模块的datetime class中的datetime方法。为此,您需要将时间戳记设置为与datetime使用的相同纪元,即timestamp()。为此,请在1970-01-01和2000-01-01之间以秒为单位添加增量。

示例:]

1970-01-01 (POSIX timestamp)

您可以使用from datetime import datetime epoch = datetime(2000, 1, 1).timestamp() t = 5.89286318e+08 dt = datetime.utcfromtimestamp(epoch + t) # dt # datetime.datetime(2018, 9, 3, 9, 38, 38) 模块进行等效的操作(尽管我建议使用time,因为它更方便):

datetime

关于与屏蔽的numpy数组有关的问题部分,您可以例如提取数组的所有非掩码值,如下所示:

import time
epoch = time.mktime(time.strptime("2000-01-01", "%Y-%m-%d"))
t = 5.89286318e+08
ts = time.gmtime(epoch + t)

# ts
# time.struct_time(tm_year=2018, tm_mon=9, tm_mday=3, tm_hour=9, tm_min=38, tm_sec=38, tm_wday=0, tm_yday=246, tm_isdst=0)
© www.soinside.com 2019 - 2024. All rights reserved.