经常会用到各种日期形式的转换,在这里做一下备忘
一、python常用的日期形式
1、时间戳:
import time
ticks = time.time()
print("当前时间戳为:",ticks)
>>>1524705721.8369513
注意:python是从1970年1月1日开始计时的,而matlab是从头开始计时的,要注意起始时间,按秒计算。
2、字符串:转换成带杠形式
GPS_second[row] = 1578532832.0 #时间戳
Struct_day = time.localtime(GPS_second[row]) #由时间戳变成时间元组
str_date = time.strftime("%Y-%m-%d", Struct_day) #由元组变成字符串
str_date
Out[8]: '2020-01-09'
3、时间元组(struct_time)
Struct_day
Out[7]: time.struct_time(tm_year=2020, tm_mon=1, tm_mday=9, tm_hour=9, tm_min=20, tm_sec=32, tm_wday=3, tm_yday=9, tm_isdst=0)
举个例子:将ICESat的GPS时间转换为日期
base_second = (2018-1970) * 365 * 86400 + 12 * 86400 #delta_time的起始时间是2018.1.1,python的起始时间是1970.1.1,求出而者之间的秒数
GPS_second = (tem + base_second) #距python的起始时间1970.1.1有多少秒,也就是时间戳
for row in range(0, GPS_second.shape[0]):
#row = 0
Struct_day = time.localtime(GPS_second[row]) #由时间戳变成时间元组
str_date = time.strftime("%Y-%m-%d", Struct_day) #由元组变成字符串
#cycle_column_str = cycle_column + '_str'
good_p.loc[row, 'time_date'] = str_date
二、将不带杠的日期形式转换为天数,为了进行时间序列的分析
from dateutil.parser import parse
from matplotlib.pylab import date2num
grid_06.loc[row_time, 'M_time'] = '20200421
grid_06.loc[row_time, 'M_time_date'] = parse(grid_06.loc[row_time, 'M_time'])
grid_06.loc[row_time, 'M_time_day'] = date2num(grid_06.loc[row_time, 'M_time_date'])
1、先用parse变成时间元组
grid_06.loc[row_time, 'M_time_date']
Out[5]: datetime.datetime(2020, 4, 21, 0, 0)
2、再用date2num换成天数
grid_06.loc[row_time, 'M_time_day']
Out[6]: 737536.0
部分参考:https://blog.csdn.net/zhubao124/article/details/80088843