我有一个带有时间变量的数组:
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'。
有人知道如何解决此问题并以日期时间格式转换时间吗?
您可以使用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)