经常会用到各种日期形式的转换,在这里做一下备忘
一、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